数组指针

 int ar[5]={1,2,3,4,5};
int (*p)[3]=&ar;
printf("%d\n%d\n",p,*p);//结果为5240728,5240728
printf("%d\n%d",p+1,*p+1);//结果为5240740,5240732

为什么结果会是这样呢

p为数组指针,存储的是整个数组的地址——&ar,而数组名ar是他的首个元素的地址——&ar[0]

由第一条printf语句可以看出&ar=&ar[0],但是,p+1的实质是加上3个int型的长度12个字节,而*p+1则是加上数组中一个元素的长度4个字节

所以p=*p只能说明他们所存的值是一样的,但是,他们的类型是不一样的

posted @ 2021-03-07 22:29  Yanmo  阅读(58)  评论(0)    收藏  举报