GCC错误:左值作为赋值的左操作数

时间:2015-12-16 18:39:10

标签: c pointers gcc

我有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;
}

3 个答案:

答案 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

有意义吗?