# 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;
```