Learning_firstly 2023-09-23 20:24 采纳率: 100%
浏览 4
已结题

p是int*类型的指针 有点疑惑p[4]=*(p+4)

int a[5][5];
int(p)[5];
p=a;
那么为什么可以p[4][2]=
(*(p+4)+2)(这里有两个星号,不知道为什么不显示,都在圆括号前面。

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-09-23 20:50
    关注

    引用 皆我百晓生 小程序回复内容作答:

    你的思路有一点混淆了。

    首先,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的元素。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月8日
  • 已采纳回答 9月30日
  • 修改了问题 9月23日
  • 修改了问题 9月23日
  • 展开全部

悬赏问题

  • ¥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光标错位 显示位置与实际不符