【发布时间】:2015-10-09 21:18:37
【问题描述】:
现在我有一个代码可以像这样进行指针运算
var1 + sizeof(structA)
Var1 是一个指针,而 structA 是一个 sizeOf 4 字节的结构。问题是,当我这样做时,地址被向下移动了 16 个字节而不是 4 个。我发现问题是因为在 C 中,即使我键入它实际上是
var1 + sizeof(structA) * sizeof(int)
as int 是 sizeof 的返回值。有没有办法解决这个问题? 对于类似的问题,我正在做
var1 - sizeof(structA)
但不是向上移动 16 个字节,而是向上移动 32 个字节,因此 0x10000032 变为 0x10000000。
有谁知道我该如何解决这个问题?
谢谢!
【问题讨论】:
-
var1的完整类型是什么? (我猜structA *)。 -
“所以 0x10000032 变为 0x10000000” - 这是一个 50 字节的变化。
-
如果你想修复它,你肯定需要先了解the pointer arithmetics in C。
-
对不起,我打错了。它是 0x10000004 变成 0x0FFFFFFC,所以 8 字节变化。 @PhilipKendall 是的,它是 structA *
标签: c pointers pointer-arithmetic