6.3.2 Other operands
6.3.2.1 Lvalue, array, and function specifier
1, an lvalue is an expression that potentially assigns an object (with an object type, not void); [Note: The first name "Lvalue" is derived from the assignment expression E1 = E2, in this expression E1 Required to be a (modifiable) left value. It might be better to recognize as a "locator value" for an object. The value described in this international standard as "an expression" is sometimes also referred to as "Rvalue". ] If a left worth is not assigned an object when it is computed, then the behavior is undefined. When an object is known to have a specific type, the type is specified by an lvalue that is used to assign the object. A modifiable lvalue is an lvalue that does not have an array type, does not have an incomplete type, does not have a const-qualified type, and if the left value is a struct or union, Then it does not have any member with a const-qualified type (recursively including any member or element of all contained aggregates or unions).
2.
ISO/IEC 9,899:2011 clause 6.3.2--other operations