Devilinside. 发表于 2020-9-13 21:53:32

关于这道题里的 *++p 是怎么回事


问一下大神们,为什么这里的*(p+2) 和 *++p 打印出来的一样啊{:10_262:}

永恒的蓝色梦想 发表于 2020-9-13 22:12:40

15行已经自加了一次,再自加一次不就和 +2 一样了?

风过无痕1989 发表于 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了,再运算 *++p 时,就使 p 先自增 1,自然也就使 p 指向了 matrix,再取 *p 的值,所以与 *(p + 2) 是一样的效果。

LuLD 发表于 2020-9-14 09:42:01

本帖最后由 LuLD 于 2020-9-14 09:43 编辑

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

*(p+2)只是在原有的值上加2,但并未讲结果重新赋值给p,所以 p 的原始值不会改变
页: [1]
查看完整版本: 关于这道题里的 *++p 是怎么回事