C++での暗黙の逆参照とは、どういう意味ですか?変数への参照を関数パラメータに渡すと、値の前に&が必要ないのですか?C++の暗黙の逆参照とは何ですか?
1
A
答えて
10
教授がポインタと参照の違いを説明しようとしていたとします。
暗黙的な参照解除を行うファンシーポインタとして参照を参照するのは、(技術的には正確ではありませんが)比較的一般的です。
int x = 5;
int* xP = &x;
int& xR = x;
xR = 6; // If you think of a reference as a fancy pointer
// then here there is an implicit de-reference of the pointer to get a value.
*xP = 7; // Pointers need an explicit de-reference.
について考えるための正しい方法は、「参照が空想ポインタである」使用するではありません。あなたは自分の言葉で参考文献を考える必要があります。これらは、基本的に既存の変数(別名、別名)の別の名前です。
したがって、関数を参照して変数を渡すとき。これは、その関数が、エイリアス経由で渡した変数を使用していることを意味します。この関数には、既存の変数の別の名前があります。関数が変数を変更すると、元の変数(別の名前)がであるため、元の変数が変更されます。
だから、あなたが質問に答えるために:
私はその値を使用することの前に&を必要としませんか?
いいえあなたは&を追加する必要はありません。
int f(int& x) // pass a value by reference
{
x =5;
}
int plop = 8;
f(plop);
// plop is now 5.
3
C++は、暗黙的にポインタデリファレンス関数ポインタであるであろうに別の文脈:あなたはこのことを知りました
void foo() { printf("foo\n"); }
void bar() {
void (*pf)() = &foo;
(*pf)(); // Explicit dereference.
pf(); // Implicit dereference.
}
関連する問題
- 1. R内の暗黙の変数参照
- 2. 暗黙の参照変換エラーなし
- 3. C++:実際には逆参照は何ですか?
- 4. 暗黙的な変換:非参照
- 5. Javaの暗黙のコンストラクタとは何か
- 6. C++の暗黙のデフォルトコンストラクタのポイントは何ですか?
- 7. C++で暗黙的にリンクされているC++とは何ですか?
- 8. Cプログラミング:逆参照ポインター
- 9. DAEの暗黙的/逆方向のオイラー
- 10. 暗黙的なキャスト演算子の左側の参照
- 11. C#の参照型とrefの違いは何ですか?
- 12. ポインタのアドレスと逆参照
- 13. Googleアクションパッケージの「暗黙的なトリガー」とは何ですか?
- 14. 暗黙の共有とは何ですか?
- 15. 「暗黙のデータベース・シーケンス」とは何ですか?
- 16. Web参照とサービス参照の違いは何ですか?
- 17. がCONST参照の暗黙的型変換
- 18. C++:技術レベル(ASM)のR値参照とは何ですか?
- 19. Scalaの暗黙的な変換と暗黙的なパラメータの関係は何ですか?
- 20. C++での演算子のオーバーロードと逆参照
- 21. 'ApplicationDbContext'から 'System.Data.Linq.DataContext'への暗黙的な参照変換はありません
- 22. StatelessServiceから 'Microsoft.ServiceFabric.Services.Remoting.IService'への暗黙的な参照変換はありません。
- 23. ApplicationUserからIdentityUserへの暗黙的な参照変換はありません
- 24. Swift参照型のinoutパラメータとして暗黙的に渡します
- 25. Cコードで不完全な型への参照を逆参照する
- 26. ダブルリンクリストの逆参照はnullです
- 27. C++コンストラクタの暗黙のメンバー
- 28. は、暗黙的にc#
- 29. findbugのPossible nullポインタの逆参照の意味は何ですか?
- 30. C暗黙の変換?
?そして、あなたの質問に答えてください:あなたはポインタを逆参照します。参照はポインタではなく、参照です。 – GManNickG
コンストラクタを使った暗黙の変換を意味しますか? – jtbandes
私のコースノートでは簡単に言及されていて、その意味はわかりません。また、Wikiはあまりにも曖昧に思えます。その言葉が存在しない場合は、質問を終わらせてください。 – Mark