int ar[5]={1,2,3,4,5}; int (*p)[5]=&ar; printf("%d\n%d\n",p,*p);//结果为5240728,5240728 printf("%d\n%d",p+1,*p+1);//结果为5240748,5240732
为什么结果会是这样呢
p为数组指针,存储的是整个数组的地址——&ar,而数组名ar是他的首个元素的地址——&ar[0]
由第一条printf语句可以看出&ar=&ar[0],但是,p+1的实质是加上整个数组的长度20个字节,而*p+1则是加上数组中一个元素的长度4个字节