Possible Duplicate:
Pointer Arithmetic




给定的代码

int arr[12];
int * cur = arr;
cur++;
cout<<"cur-arr = "<<cur-arr<<endl;


输出1,但我期望sizeof(int)。有人可以解释这种行为的性质吗?

最佳答案

这是C指针算术的已定义行为。它以指针类型的大小为单位。如果将最后一行的减法更改为

(char *)cur - (char *)arr


您在输出中得到4。

关于c++ - C中两个地址的差,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8730662/

10-15 17:56