タグ付けされた質問 「dereference」


3
Cに矢印(->)演算子が存在するのはなぜですか?
ドット(.)演算子は、構造体のメンバーにアクセスするために使用され->、Cの矢印演算子()は、問題のポインターによって参照される構造体のメンバーにアクセスするために使用されます。 ポインター自体には、ドット演算子を使用してアクセスできるメンバーはありません(実際には、仮想メモリ内の場所を表す数値にすぎないため、メンバーはありません)。したがって、ポインターで使用される場合にポインターを自動的に逆参照するようにドット演算子を定義した場合でも、あいまいさはありません(コンパイラーがコンパイル時に知っている情報)。 では、言語の作成者が、この一見不要に見える演算子を追加することで、物事をより複雑にすることに決めたのはなぜですか?大きな設計上の決定は何ですか?
264 c  pointers  dereference 

2
Rustの正確な自動逆参照ルールは何ですか?
私はRustで学習/実験しています。この言語で見つけた優雅さの中に、私を困惑させ、まったく場違いのように見える1つの特殊性があります。 Rustは、メソッド呼び出しを行うときに、ポインターを自動的に逆参照します。正確な動作を確認するためにいくつかのテストを行いました。 struct X { val: i32 } impl std::ops::Deref for X { type Target = i32; fn deref(&self) -> &i32 { &self.val } } trait M { fn m(self); } impl M for i32 { fn m(self) { println!("i32::m()"); } } impl M for X { fn m(self) { …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.