为什么我不能通过这个指针黑客找到元素大小?

Abh*_*osh 6 c arrays pointers

请考虑以下C语言

int arr[]= {1,2,3,4,5};
Run Code Online (Sandbox Code Playgroud)

我的系统使用4个字节来存储int数据.现在&arr[0] => 0022FEB0&arr[1]=>0022FEB4运行的那一刻

现在

int diff=&arr[1]-&arr[0];
Run Code Online (Sandbox Code Playgroud)

存储在DIFF值1而不是4.

为什么?

klu*_*utt 6

这就是指针的工作方式.您没有计算字节差异.您正在计算元素数量的差异.

要获得元素大小,请使用 sizeof(*arr)

要获得字节差异,请使用 (&arr[1]-&arr[0]) * sizeof(*arr)