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. C中引用「 - >」的結構解引用是什麼時候?
- 2. 什麼是C中的前向引用?
- 3. 什麼是在C#中的C++隱式鏈接DLL等價物?
- 4. Postgres中的「隱式序列」和「隱式索引」是什麼意思?
- 5. 右值引用:爲什麼不是右值被隱式移動?
- 6. 什麼是由oracle添加的隱式索引
- 7. C++:什麼是獨立引用用於?
- 8. 什麼是Scala doc中的「隱含的隱式值成員」?
- 9. 在這個例子中使用隱式解包可選的點是什麼?
- 10. 什麼是隱式類型的優勢的C#3.0> +
- 11. C中表達式的解析規則是什麼?
- 12. 什麼是上隱式的轉換
- 13. 隱式「this」在匿名類中引用了什麼?
- 14. C++隱式默認構造函數的要點是什麼?
- 15. C++中的顯式和隱式賦值有什麼區別
- 16. 什麼是C++解釋器用於?
- 17. 隱式傳遞並返回其引用的對象的範圍是什麼?
- 18. Python:爲什麼說被引用的變量隱式地是全局的?
- 19. 爲什麼函數同時具有隱式和顯式原型引用,並且可以設置隱式引用?
- 20. 爲什麼不適用的隱式轉換會引入歧義?
- 21. 在C++中引用參考的用途是什麼?
- 22. Scala中的隱式轉換和隱式參數之間的關係是什麼?
- 23. C中下列宏的副作用是什麼?嵌入式C
- 24. 什麼是TimeZone隱式設置?
- 25. 什麼是「隱式數據庫序列」?
- 26. 隱式認證是什麼意思?
- 27. 什麼是編譯器隱式方法?
- 28. 什麼是隱式方法調用和顯式方法調用?
- 29. Perl中引用的目的是什麼?
- 30. C中的「未定義的varName引用」是什麼意思?
你從哪兒聽到的?並回答你的問題:你取消引用指針。引用不是一個指針,它是一個引用。 – GManNickG
你的意思是用構造函數進行隱式轉換嗎? – jtbandes
在我的課程筆記中簡要提及它,我不確定它的含義。另外,Wiki似乎太含糊。如果該詞不存在,請隨時關閉該問題。 – Mark