为什么指针减法导致两者之间的元素数量?

时间:2016-06-08 15:36:22

标签: c++ pointers

考虑代码:

int arr[20]{};
int * ptr1=arr, * ptr2=&arr[1];
std::cout<<ptr1<<std::endl<<ptr2<<std::endl<<ptr2-ptr1;

输出:

0x7fff4003e0d0
0x7fff4003e0d4
1

为什么它不是4?

1 个答案:

答案 0 :(得分:0)

如果不是这样的话,你最终会将差异除以sizeof(whatever)。元素的数量比原始差异更有用。当你需要后者时,将两个指针强制转换为char*进行减法。