第二个printf的(*p)++为什么等价于a[2]++呢?

img


求解答,指针这里我疑惑越来越多了😞,有木有人帮我理一下这一块内容哇

因为初始时,p=a+1,此时p指向数组第二个元素,在执行完第一个printf后,指针p指向数组第三个元素,也就是a[2],由于括号的优先级更高,所以可将*p当成一个整体,而*p表示的就是a[2],然后整体执行自增运算,就等价于a[2]++。

因为前面有*p = a+1,这个p就指向a[1]
然后第一个printf之后p又向后移动一位,相当于a[2]
所以第三个( * p)++,就相当于(a[2])++了。因为p指向的是a[2]的地址