int a[5][5];
int(p)[5];
p=a;
那么为什么可以p[4][2]=(*(p+4)+2)(这里有两个星号,不知道为什么不显示,都在圆括号前面。
p是int*类型的指针 有点疑惑p[4]=*(p+4)
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注 引用 皆我百晓生 小程序回复内容作答:
你的思路有一点混淆了。
首先,p是一个int(*)[5]类型的指针,表示指向一个有5个int元素的数组的指针。也就是说,它可以指向一个二维数组a。
当你执行p = a;时,p指向了数组a的第一行。
接下来,当你执行p[4][2] = ((p+4)+2);时,实际上等价于a[4][2] = ((p+4)+2);。
p+4:根据p = a;,p指向a的第一行,所以p+4指向a的第五行。
(p+4)+2:根据(p+4)+2,我们从第五行向下移动了两行,所以它指向a的第七行。
((p+4)+2):因为((p+4)+2)是一个指针,所以它表示的是指向a的第七行的指针。
((p+4)+2)是一个指针,所以可以作为左值,你可以将其用于赋值操作和访问其元素。最后,p[4][2] = ((p+4)+2);表示将a的第七行的第三个元素的值赋给a的第五行的第三个元素。
简而言之,p[4][2] = ((p+4)+2);的含义是使用指针操作访问和修改二维数组a的元素。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 安装quartus II18.1时弹出此error,怎么解决?
- ¥15 keil官网下载psn序列号在哪
- ¥15 想用adb命令做一个通话软件,播放录音
- ¥30 Pytorch深度学习服务器跑不通问题解决?
- ¥15 部分客户订单定位有误的问题
- ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
- ¥15 Bug traq 数据包 大概什么价
- ¥15 在anaconda上pytorch和paddle paddle下载报错
- ¥25 自动填写QQ腾讯文档收集表
- ¥15 DbVisualizer Pro 12.0.7 sql commander光标错位 显示位置与实际不符