【发布时间】:2018-12-05 00:59:48
【问题描述】:
short x = 5;
short*ptr = &x;
short *ptr2 = ptr+5;
cout << ptr2 - ptr << endl;
cout << (long) ptr2 - (long)ptr << endl;
我知道指针存储地址,但我不明白为什么这两行的答案都不是 10。
不是ptr2 = 指针地址+ sizeof(short) * 5吗?
【问题讨论】:
-
很好奇您是如何理解
ptr+5是根据元素数量而不是字节数来工作的,但对于ptr2 - ptr也能做到这一点感到惊讶。如果(ptr + N) - ptr不等于N,会不会更令人惊讶? -
是的,我确实是这样考虑的,但我认为有比这更好的解释。
-
注意最后一次计算的结果不保证是10;将指针转换为
long的结果不一定是明智的