考虑代码:
int arr[20]{};
int * ptr1=arr, * ptr2=&arr[1];
std::cout<<ptr1<<std::endl<<ptr2<<std::endl<<ptr2-ptr1;
输出:
0x7fff4003e0d0
0x7fff4003e0d4
1
为什么它不是4?
答案 0 :(得分:0)
如果不是这样的话,你最终会将差异除以sizeof(whatever)
。元素的数量比原始差异更有用。当你需要后者时,将两个指针强制转换为char*
进行减法。