为什么我不能增加一个数组呢?

char a[] = "hello"; 

我的理解是,行为类似于指向字符串的常量指针。 我知道写a++不行,但为什么呢?

不,增加一个数组是不行的。 虽然数组可以自由转换为指针,但它们不是指针。 因此,编写a++会触发错误。

但是,写作

 char *p = a; p++; 

没问题,因为p是一个指针,其值等于a初始元素的位置。

a++由于衰减到指针而格式不正确,并且衰减的结果不是左值(因此没有持久对象,其状态可以“递增”)。

如果要操作指向数组的指针,首先应该创建一个指针:

 char* p = a; // decayed pointer initializes p a++; // OK ++a; // even OKer 

在C中分配给数组类型的表达式是不合法的。 增量( ++ )涉及分配,因此也不合法。

您在顶部显示的是用于初始化 char数组变量的特殊语法。