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