A postfix expression followed by an expression in square brackets is a
postfix expression.
One of the expressions shall be a glvalue of type โarray of
Tโ or a prvalue of type โpointer
to Tโ and the other shall be a prvalue of unscoped enumeration or integral type.
The type โTโ shall be a completely-defined object type.58
The expression E1[E2] is identical (by definition) to
*((E1)+(E2)),
except that in the case of an array operand, the result is an lvalue
if that operand is an lvalue and an xvalue otherwise.
The expression E1 is sequenced before the expression E2.