0

有什么区别:

*((uint32_t*)(p) + 4);
*(uint32_t*)(p+4);

或者价值甚至有差异?

我的直觉是,在后面的示例中,值从 p 指向的数组的第 4 个索引开始,并从索引 4 开始获取前 4 个字节。而在第一个示例中,它每 4 个索引占用一个字节。这种直觉正确吗?

4

1 回答 1

2

p+4表达式通过将4*sizeof(*p)字节添加到 的值来计算地址p。如果 的大小与 的大小*p相同uint32_t,则这两个表达式的结果没有区别。

鉴于

p是一个int指针

并假设int您的系统是 32 位的,您的两个表达式会产生相同的结果。

于 2013-04-06T00:17:45.137 回答