通常はドット ( Struct.Member
) で構造体メンバーにアクセスしますが、 がStruct
ポインターの場合は、使用する必要がありますStruct->Member
これには特別な理由がありますか?どちらの場合も、メモリの一部を参照しているだけだからです。また、コンパイラは両方の演算子を処理できる必要があるため、強制されたコードスタイルにすぎませんか?
それは、言語がそのように定義されているためです。
演算子のプレフィックスを.
構造体または構造体へのポインターにすることができる言語があります。あなたが言うように、コンパイラは接頭辞の型を知っているので、あいまいさは導入されません。
Cはたまたまそうしないだけです。深い理由があるとは思いませんが、デニス・リッチーがやろうと決めた方法です。
また、.
for 構造体とfor ポインターを使用すると、プレフィックスがポインターであるかどうかが読者->
に明確になります。C のような比較的低レベルの言語では、そのような詳細が重要になる場合があります。