数组类型的指针,为什么解引用相同

MSOKD 2014-03-10 06:50:37


typedef int arrtype[2][2];

int arr[]={1,2,3,4,5,6,7,8};

arrtype* arr1=(arrtype*)arr;

printf("%d\n",arr);
printf("%d\n",arr1);
printf("%d\n",*arr1);
printf("%d\n",**arr1); //以上都输出arr的地址,为什么后面这2个也一样输出相同的的地址呢。

printf("%d\n",***pais);//1
printf("%d\n",pais[0][0][0]); //1
printf("%d\n",*pais[0][0]); //1

...全文
88 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2014-03-11
  • 打赏
  • 举报
回复
理解指针和数组的区别比较重要,你这里的arrtype*是指向[2][2]数组的指针,这个指针+1相当于移动一个[2][2]数组的距离,即4个int。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧