请考虑以下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.
为什么?
这就是指针的工作方式.您没有计算字节差异.您正在计算元素数量的差异.
要获得元素大小,请使用 sizeof(*arr)
要获得字节差异,请使用 (&arr[1]-&arr[0]) * sizeof(*arr)