我只是想了解C语言中的指针概念,并遇到了此错误。对于以下代码,我收到了“需要左值作为增量操作数”错误。请帮助我了解问题所在。
#include<stdio.h>
int main()
{
char *s[] = {"black", "white", "pink", "violet"};
++s; //error at this line
printf("%s\n", *s);
char **ptr[] = {s+3, s+2, s+1, s}, ***p;
p = ptr;
++p;
printf("%s", **p+1);
return 0;
}
s
是指向的指针数组char
。数组名称是不可修改的左值。++s
正在修改s
,无法修改。
如我们所见,在声明数组时,将为该数组的单元分配一个连续的内存块,并且还将分配并初始化一个指针单元(适当类型的指针)并指向该数组的第一个单元。该指针单元格的名称为数组。当为阵列单元分配内存时,起始地址是固定的,即在程序执行期间不能更改。因此,指针单元的值不应更改。为了确保不更改此指针,在C语言中,数组名称不得用作赋值语句左侧的变量,即,它们不得用作Lvalue。相反,如有必要,可以声明适当类型的单独指针变量并将其用作Lvalues。
建议阅读: 数组名称是C中的指针吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句