- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- int arr[3] = {0, 1, 2};
- printf("%x %x %x\n", &arr, arr, &arr[0]);
- printf("%x %x %x", &arr+1, arr+1, &arr[0]+1);
- return 0;
- }
复制代码 楼主的理解是正确的,数组名代表的地址其值虽然跟&arr[0]的值一样但是意义不一样,&arr是取整个数组的首地址,相当于一个数组指针,在整个数组的首地址基础上加1就相当于加上这个数组的元素占用的长度。arr + 1在数组的语法中代表的就是相对于起始位置偏移一个位置,&arr[0]+1的意义也是在第一个元素的地址基础上偏移一个存储位。可以用如下的代码验证:
|