我无法理解指针算法。任何帮助将不胜感激。
uint32* valA = 0x80000000;
uint32 valB = 0x7a0
valA += valB;
valA 的值为 0x80001e80。这是 valB 的四倍。
我的疑问: 1、为什么valA的值没有变成0x800007a0。 2. 如何让 valA 只增加 0x7a0 而不是 valB 值的四倍。
最佳答案
C 中的指针算法按类型的大小缩放,这使得这两个等价:
valA = valA + valB;
valA = &valA[valB];
如果你想强制它把它当作一个字节偏移量,你需要先转换为 char *
:
valA = (uint32 *)((char *)valA + valB);
关于c - 将 uint32* 添加到 uint32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22518671/