"需要与QUOT左值;努力增加阵列时出错 [英] "lvalue required" error when trying to increment array

查看:176
本文介绍了"需要与QUOT左值;努力增加阵列时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


  

可能重复:结果
  是数组名在C中的指针?


假设我有一个字符数组说编曲和改编将重新present第一个元素的地址,以便ARR ++应该是完全合法的,那么为什么编译器说左值要求。

另外,如果我这样做:
ARR = ARR + 1,那么它为什么是无效的转换。我只是一个增加指针。编译器告诉LHS上的操作数类型为char [4],但在RHS它的char *。

 的main()
{
ARR的char [] = {'A​​','B','C','D'};
为(;!=改编改编+ 4; ARR ++)//需要左值
的printf(%C,* ARR);
}


解决方案

这是数组名是不是可以分配给一个变​​量。如果你想修改它,你应该使用一个指针变量:

 的char * arr_ptr =改编;

您可以再做 arr_ptr ++ arr_ptr = arr_ptr + 1 ;

Possible Duplicate:
Is array name a pointer in C?

Suppose I have a char array say arr and arr will represent the address of first element so arr++ should be perfectly legal then why compiler says 'lvalue required'.

Also if I do: arr=arr+1 then why it is invalid conversion. I am just increasing pointer by one. Compiler tells that on LHS the operand type is char[4] but on RHS it is char *.

main()
{
char arr[]={'a','b','c','d'};
for(;arr!=arr+4;arr++) //lvalue required 
printf("%c",*arr);
}

解决方案

An array name is not a variable that can be assigned to. If you want to modify it, you should use a pointer variable:

char *arr_ptr = arr;

You can then do arr_ptr++ and arr_ptr = arr_ptr+1;

这篇关于"需要与QUOT左值;努力增加阵列时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆