An lvalue (pronounced “el-value”)
is an expression that refers to a region of storage that can be
manipulated.
For example, all simple variables, like ints and floats are lvalues. An element of an array is also an
lvalue; however an entire array is not. A member of a structure
or union is an lvalue; an entire structure or union is not.
Given the following declarations:
int *p, a, b;
int arr[4];
int func();
a /* lvalue */
a + b /* Not an lvalue */
p /* lvalue */
*p /* lvalue */
arr /* lvalue, but not modifiable */
*(arr + a) /* lvalue */
arr[a] /* lvalue, equivalent to *(arr+a) */
func /* Not an lvalue */
func() /* Not an lvalue */