A pointer-indirection-expression consists of an asterisk (*) followed by a unary-expression. pointer-indirection-expression : *unary-expression
The unary * operator denotes pointer indirection and is used to obtain the variable to which a pointer points.
The result of evaluating *P, where P is an expression of a pointer type T*, is a variable of type T. It is a compile-time error to apply the unary * operator to an expression of type void* or to an expression that isn't of a pointer type.
The effect of applying the unary * operator to a null pointer is implementation-defined. In particular, there is no guarantee that this operation throws a System.NullReferenceException.
If an invalid value has been assigned to the pointer, the behavior of the unary * operator is undefined. [Note: Among the invalid values for dereferencing a pointer by the unary * operator are an address inappropriately aligned for the type pointed to (see example in 25.4), and the address of a variable after the end of its lifetime. end note]
For purposes of definite assignment analysis, a variable produced by evaluating an expression of the form *P is considered initially assigned (12.3.1).