可能重复:
数组名是C中的指针吗?
假设我有一个char数组说arr和arr将代表第一个元素的地址,所以arr ++应该是完全合法的,那么为什么编译器会说'左值'.
如果我这样做:arr = arr + 1那么为什么它是无效的转换.我只是一个一个地增加指针.编译器告诉LHS操作数类型是char [4],但在RHS上它是char*.
main()
{
char arr[]={'a','b','c','d'};
for(;arr!=arr+4;arr++) //lvalue required
printf("%c",*arr);
}
Run Code Online (Sandbox Code Playgroud)
数组名称不是可以分配的变量.如果要修改它,则应使用指针变量:
char *arr_ptr = arr;
Run Code Online (Sandbox Code Playgroud)
然后,您可以做arr_ptr++和arr_ptr = arr_ptr+1;