我有char* pointer
,当我(++pointer)= NULL
时,出现错误:
lvalue required as left operand of assignment
这是什么意思,我该如何解决?代码是
void func(const char*p1, const char *p2){
char * pointer;
pointer=malloc(strlen(p1)+strlen(p2)+2;
(++pointer)=NULL;
}
答案 0 :(得分:3)
符号pointer
是左值,可以在左侧的赋值中使用。但是,(++pointer)
不是左值,不能在同一作业中使用。
如果在距离很远的外星球上进行编译,则此代码会将指针递增1,然后将其设置为零(NULL
),以便达到相同的效果,并可移植到地球编译器,使用pointer = NULL;
答案 1 :(得分:2)
子表达式(++pointer)
将计算为 rvalue ,并且它不能是赋值(=
)运算符的左操作数。
答案 2 :(得分:2)
有些表达式不能是assignable l-value
。
在您的代码中(++pointer)
是一个表达式,不能用作=
符号的左操作数。
想想
之类的东西(x + 2) = 5 // (x + 2) is an expression
有意义吗?