为什么我不能增加一个数组呢?
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
数组变量的特殊语法。