c - 尝试递增数组时出现 "lvalue required"错误

标签 c arrays lvalue

<分区>

Possible Duplicate:
Is array name a pointer in 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);
}

最佳答案

数组名不是可以赋值的变量。如果你想修改它,你应该使用指针变量:

char *arr_ptr = arr;

然后你可以执行 arr_ptr++arr_ptr = arr_ptr+1;

关于c - 尝试递增数组时出现 "lvalue required"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13667191/

相关文章:

javascript - 将 C# 列表转换为 javascript 数组

c++ - 传递 const int* 和 int* 时调用不同版本的重载函数 (const int* const&/&&)

c++ - 绑定(bind)类型为 T&& 的左值表达式

如果独立运行,gdb 下 Linux 上的 C 代码运行会有所不同吗?

c - 如何在 CubeMX 中配置双代码启动模式

c - 为什么数组参数的大小与 main 中的大小不同?

php - 在php中将表记录保存在关联数组中

c - 如何访问不同程序中的变量值?

javascript - ES6 : Find an object in an array by one of its properties

c - 如果++a返回左值那么为什么&(++a)显示编译错误?