关于这道题里的 *++p 是怎么回事
问一下大神们,为什么这里的*(p+2) 和 *++p 打印出来的一样啊{:10_262:} 15行已经自加了一次,再自加一次不就和 +2 一样了? 本帖最后由 风过无痕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:43 编辑
p++== p = p + 1,从跟本上 p 的值已经被改变了,所以到下一个 ++p 的时候又会自增 1,然后再取指针对应的值,
*(p+2)只是在原有的值上加2,但并未讲结果重新赋值给p,所以 p 的原始值不会改变
页:
[1]