友人がデータ構造のコースを受講しており、リンク リストのコンテキストで違いを説明しようとしています。私は本当にこれを知っている必要がありますが、高レベルのフレームワークに焦点を当てているので、少し錆びています。「矢印はポインターで使用される」ことは知っていますが、それだけです。
基本的に、C では、ある変数のプロパティにアクセスするときのドットと矢印の違いは何ですか? また、私は特にバカな気分なので、これはC++でも同じですか、それとも変更されましたか?
通常、.
直接アクセスする構造体がある場合は が使用され、構造体へ->
のポインタがあり、構造体にアクセスするためにそれを逆参照する必要がある場合は が使用されます。
a->b
のシンタックス シュガーです(*a).b
。CでもC++でも同じです。
myPtr->someVariable
(*myPtr).someVariable
(myPtr を逆参照し、メンバーにアクセスする)と同じです。*myPtr.someVariable
ポインターとして扱う場合(myPtr.someVariable)
(メンバーにアクセスし、全体をポインターとして逆参照します)。
pointersomething->member
と同じことです
(*pointersomething).member
理論的には可能なショートカットとして存在します
*pointersomething.member
しかし 。演算子は * 演算子よりも優先順位が高いため、括弧が必要です。したがって、矢印ショートカットが必要です。