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.
有什么区别:
*((uint32_t*)(p) + 4); *(uint32_t*)(p+4);
或者价值甚至有差异?
我的直觉是,在后面的示例中,值从 p 指向的数组的第 4 个索引开始,并从索引 4 开始获取前 4 个字节。而在第一个示例中,它每 4 个索引占用一个字节。这种直觉正确吗?
该p+4表达式通过将4*sizeof(*p)字节添加到 的值来计算地址p。如果 的大小与 的大小*p相同uint32_t,则这两个表达式的结果没有区别。
p+4
4*sizeof(*p)
p
*p
uint32_t
鉴于
p是一个int指针
int
并假设int您的系统是 32 位的,您的两个表达式会产生相同的结果。