更改位值如何影响地址

时间:2013-04-06 01:14:02

标签: c pointers bit

例如,如果uint8_t *p的地址为00000400,则(uint32_t*)(p)将保留0x00000400(十六进制)。由于p + 4只是一个8位的int指针,0x00000404也会简单p吗?

2 个答案:

答案 0 :(得分:0)

在您可能实际使用的平台上,是的。

答案 1 :(得分:0)

是的,您可以将指向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))