"需要与QUOT左值;努力增加阵列时出错 [英] "lvalue required" error when trying to increment array
问题描述
可能重复:结果
是数组名在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++
andarr_ptr = arr_ptr+1
;这篇关于"需要与QUOT左值;努力增加阵列时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!