構造体について質問があります。

通常ポインタが指すデータは*pや*(p+i)のように「*」で指定します。

しかしポインタが指すものが構造体のメンバの場合は
p->name や (p+i)->name のように「*」を使わずにアロー演算子を使います。
これはどうしてでしょうか?
C言語の仕様?