void main()
{
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf("%d,%d",*(a+1),*(ptr-1));
}
a,&a 的值是一样的,但意思不一样,a 是数组首元素的首地址,也就是a[0]的首地址,&a 是数组的首地址,a+1 是数组下一元素的首地址,即a[1]的首地址,&a+1 是下一个数组的首地址。
总结:
对一维数组a[2]来说,a就是数组首元素的地址,&a是数组的首地址。而对二维数组a[2][10]来说,a是数组的首个行数组即a[0]的首地址,&a是整个数组的首地址,所以&a+1跨过4*2*10字节。