From the C99 Spec.
The first operand of the .
operator shall have a qualified or unqualified structure or union
type, and the second operand shall name a member of that type.
The first operand of the ->
operator shall have type pointer to qualified or unqualified
structure or pointer to qualified or unqualified union, and the second operand shall
name a member of the type pointed to.
My guess is, for identification purpose they used two operators for member access. i.e for pointer type struct variable is ->
and .
for ordinary struct variable.
For example:
struct sample E, *E1;
the expression (&E)->MOS
is the same as E.MOS
and
(*E1).MOS
is the same as E1->MOS