pointers – lvalue required as left operand of assignment error when using C++

pointers – lvalue required as left operand of assignment error when using C++

When you have an assignment operator in a statement, the LHS of the operator must be something the language calls an lvalue. If the LHS of the operator does not evaluate to an lvalue, the value from the RHS cannot be assigned to the LHS.

You cannot use:

10 = 20;

since 10 does not evaluate to an lvalue.

You can use:

int i;
i = 20;

since i does evaluate to an lvalue.

You cannot use:

int i;
i + 1 = 20;

since i + 1 does not evaluate to an lvalue.

In your case, p + 1 does not evaluate to an lavalue. Hence, you cannot use

p + 1 = p;

To assign, you should use p=p+1; instead of p+1=p;

int main()
{

   int x[3]={4,5,6};
   int *p=x;
   p=p+1; /*You just needed to switch the terms around*/
   cout<<p<<endl;
   getch();
}

pointers – lvalue required as left operand of assignment error when using C++

Put simply, an lvalue is something that can appear on the left-hand side of an assignment, typically a variable or array element.

So if you define int *p, then p is an lvalue. p+1, which is a valid expression, is not an lvalue.

If youre trying to add 1 to p, the correct syntax is:

p = p + 1;

Leave a Reply

Your email address will not be published.