鱼C论坛

 找回密码
 立即注册
查看: 1234|回复: 3

[已解决]关于这道题里的 *++p 是怎么回事

[复制链接]
发表于 2020-9-13 21:53:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

问一下大神们,为什么这里的  *(p+2) 和 *++p 打印出来的一样啊
最佳答案
2020-9-13 23:18:40
本帖最后由 风过无痕1989 于 2020-9-13 23:22 编辑

p 指向数组的0行1列,p + 2 就指向了0行3列,*(p + 2) 就是取0行3列的值;
*p 是取0行1列的值,*p++ 是先取 *p 的值,再使 p 自增 1,到了第3个printf() 时,p 已经指向了 matrix[0][2]了,再运算 *++p 时,就使 p 先自增 1,自然也就使 p 指向了 matrix[0][3],再取 *p 的值,所以与 *(p + 2) 是一样的效果。

代码

代码

结果

结果

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-13 22:12:40 | 显示全部楼层
15行已经自加了一次,再自加一次不就和 +2 一样了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-13 23:18:40 | 显示全部楼层    本楼为最佳答案   
本帖最后由 风过无痕1989 于 2020-9-13 23:22 编辑

p 指向数组的0行1列,p + 2 就指向了0行3列,*(p + 2) 就是取0行3列的值;
*p 是取0行1列的值,*p++ 是先取 *p 的值,再使 p 自增 1,到了第3个printf() 时,p 已经指向了 matrix[0][2]了,再运算 *++p 时,就使 p 先自增 1,自然也就使 p 指向了 matrix[0][3],再取 *p 的值,所以与 *(p + 2) 是一样的效果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-14 09:42:01 | 显示全部楼层
本帖最后由 LuLD 于 2020-9-14 09:43 编辑

p++  == p = p + 1,从跟本上 p 的值已经被改变了,所以到下一个 ++p 的时候又会自增 1,然后再取指针对应的值,

*(p+2)  只是在原有的值上加2,但并未讲结果重新赋值给p,所以 p 的原始值不会改变
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 03:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表