#include <stdio.h>
int main(void){
int a[5] = {1,2,3,4,5};
int* p = (int*)(&a + 1);
printf("*(p - 1) = %d \n",*(p - 1));
return 0;
}
这里输出结果是:5.刚开始理解不了这里为什么输出结果是5.后来经指点理解了。一下是个人的理解,仅供参考:
单a存储的是数组的首地址,相对于数组内单个元素。&a存储的是数组首地址的地址,这里相当于把单位提升为以整个数组为一个单位。int a[][5] = {{1,2,3,4,5},{6,7,8,9,10}};这里&a 相当于&a[0],&a + 1 相当于&a[1].