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.
例如,如果地址uint8_t *p是00000400,将(uint32_t*)(p)保留0x00000400(以十六进制表示)。也很p + 4简单,0x00000404因为p它只是一个 8 位 int 指针?
uint8_t *p
00000400
(uint32_t*)(p)
0x00000400
p + 4
0x00000404
p
是的,您可以将指向 uint8_t 的指针转换为 uint32_t。取消引用它可能不是最理想的,但它会起作用。如果您使用的是小端机器,那么这样做的结果可能会让您大吃一惊。
pointer_to_type_t + n将永远是&pointer_to_type_t[n]或另一种说法:(type_t*)((uint32|uint64)(pointer_to_type_t) + n * sizeof(type_t))
pointer_to_type_t + n
&pointer_to_type_t[n]
(type_t*)((uint32|uint64)(pointer_to_type_t) + n * sizeof(type_t))
在您可能实际使用的平台上,是的。