84) Thus, &*E is equivalent to E
(even if E is a null pointer), and
&(E1[E2]) to ((E1)+(E2)).
It is always true that if E is a function designator
or an lvalue that is a valid operand of the unary &
operator, *&E is a function designator or an lvalue
equal to E.
If *P is an lvalue and T is the
name of an object pointer type, *(T)P is an lvalue
that has a type compatible with that to which T
Among the invalid values for dereferencing a pointer by the unary
* operator are a null pointer, an address
inappropriately aligned for the type of object pointed to, and the
address of an object after the end of its lifetime.