有关数组的赋值问题,有一下选择

若有一下定义,则值为3的表达式是哪个
A和D不都是先取地址后加一吗
可以分别解释一下其他选项吗

img

首先确定p+=2后指针指向a[2],也就是值为3了。
之后就是区别下前缀++和后缀++
简单来说前缀是先计算后赋值,后缀是先赋值后计算,因此前缀都得不到3
*和前缀++优先级一样,从右向左结合。因此
*++p 为*(++p)= a[3] 指针指向下一个元素
++*p为++(*p)=++(a[2]),对指针所指的元素+1。