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

Why pointers substraction results in number of elements in between?

本文关键字:两者之间 元素 指针 为什么      更新时间:2023-10-16

考虑代码:

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

输出:

0x7fff4003e0d0
0x7fff4003e0d4
1

为什么不是4?

如果没有这样做,你最终只会一直将差值除以sizeof(whatever)。元素的数量远比原始差异有用。当您需要后者时,将两个指针转换为减法char*