取消引用演员

时间:2013-10-24 02:22:19

标签: c pointers

*(uint16_t *)"200"返回什么?根据我的理解,"200"引用了一个指向字符数组的指针,因此指针引用'2'字符,然后通过ascii字符转换为整数,但我不明白最终*字符的作用。

1 个答案:

答案 0 :(得分:3)

将复杂表达式分解为多个部分:

char const* a = "200";
uint16_t*   b = (uint16_t*)a;
uint16_t    c = *b;

a是指向字符串文字('2')的初始字符的指针。

当我们通过演员获得b时,我们说“假装指向的数据实际上是uint16_t(或其数组)。

当我们取消引用b以获取c时,我们会获得“uint16_t地址b。”

因此,它将字符串文字("20")的前两个字符(两个字节,16位)重新解释为uint16_t