3

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

4

1 回答 1

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.

于 2013-10-24T02:24:18.673 回答