Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
返回什么*(uint16_t *)"200"?据我了解,"200"指的是指向字符数组的指针,所以指针指的是'2'字符,然后通过 ascii 字符转换为整数,但我不明白最终*字符的作用。
*(uint16_t *)"200"
"200"
'2'
*
将复杂表达式分解为多个部分:
char const* a = "200"; uint16_t* b = (uint16_t*)a; uint16_t c = *b;
a是指向字符串字面量 ( '2') 的初始字符的指针。
a
当我们b通过强制转换获得时,我们说“假设指向的数据实际上是一个uint16_t(或其数组)。
b
uint16_t
当我们取消引用b获取c时,我们获取“uint16_t地址b”。
c
"20"因此,它将字符串文字 ( )的前两个字符(两个字节,16 位)重新解释为uint16_t.
"20"