这题什么意思,没懂,感觉都对啊

img

记住,数组不可以被改变,而a++是a=a+1的简写,所以a不能是数组
所以AB错了,A是int的二维数组,B是char*的数组,都不可变
C创建了一个指向char[3]数组的指针,但是指针没有赋值,所以对该指针的运算是没有意义的
D创建了一个int数组,并且创建了int指针a并指向数组,这个a因为是指针可以进行自增运算,也有意义,表示b[1]的指针

我猜是要看哪个声明下的a可以进行自增操作。我看题目有两个选项都满足,实际试了一下,确实有两个选项,分别是C和D。
首先我们说怎么阅读指针:右左法则。即,从标识符(可以简单理解为变量名)开始看,先向右读,遇到右括号则折返;向左读则遇到左括号折返,已经阅读的部分直接略过,直到读完整个声明。越早阅读到的,越接近该标志符的本质。由于初始化语句在没有类型推导的前提下对类型没有影响,可以直接忽略。
A:不用多说,二维int数组。显然,不能对a表示的数组名自增。
B:忽略初始化赋值部分,它是数组,数组存储的是char指针。由于a这里本质是数组,也不能自增。
C:从a开始阅读,立即遇到右括号,折返遇到星号,说明a是指针。遇到左括号,折返,得知a这个指针指向长度为3的数组,而且是char数组。由于a只是个普通指针,可以自增。
D:a的本质显然是普通的int指针,可以自增。

那种形式的变量a可以进行自加