講解C++編程中Address-of運算符&的作用及用法
語法
& cast-expression
備注
一元 address-of 運算符 (&) 采用其操作數(shù)的地址。address-of 運算符的操作數(shù)可以是函數(shù)指示符,也可以是指定不是位域且不使用 register 儲存類說明符聲明的對象的左值。
address-of 運算符僅適用于具有基本、結構、類或在文件范圍級別聲明的聯(lián)合類型的變量,或僅適用于下標數(shù)組引用。在這些表達式中,可在 address-of 表達式中添加或提取不包括 address-of 運算符的常數(shù)表達式。
當應用于函數(shù)或左值時,該表達式的結果將是派生自操作數(shù)類型(右值)的指針類型。例如,如果操作數(shù)的類型為 char,則表達式的結果為指向 char 的類型指針。address-of 運算符(應用于 const 或 volatile 對象)的計算結果為 const type * 或 volatile type *,其中 type 是原始對象的類型。
在將 address-of 運算符應用于限定名時,結果將取決于 qualified-name 是否指定靜態(tài)成員。如果是這樣,則結果為指向成員聲明中指定的類型的指針。如果該成員不是靜態(tài)的,則結果為指向由 qualified-class-name 指示的類的成員 name 的指針。
以下代碼段說明了結果的不同之處,取決于該成員是否為靜態(tài)的:
// expre_Address_Of_Operator.cpp // C2440 expected class PTM { public: int iValue; static float fValue; }; int main() { int PTM::*piValue = &PTM::iValue; // OK: non-static float PTM::*pfValue = &PTM::fValue; // C2440 error: static float *spfValue = &PTM::fValue; // OK }
在此示例中,由于 fValue 是靜態(tài)成員,因此表達式 &PTM::fValue 產(chǎn)生類型 float * 而不是類型 float PTM::*。
僅當明確要引用的函數(shù)的版本時,才能采用重載函數(shù)的地址。有關如何獲取特定重載函數(shù)的地址的信息,請參閱重載函數(shù)的地址。
通過將 address-of 運算符應用于引用類型,可獲得與將該運算符應用于引用綁定到的對象所獲得的結果相同的結果。例如:
// expre_Address_Of_Operator2.cpp // compile with: /EHsc #include <iostream> using namespace std; int main() { double d; // Define an object of type double. double& rd = d; // Define a reference to the object. // Obtain and compare their addresses if( &d == &rd ) cout << "&d equals &rd" << endl; }
Output
&d equals &rd
以下示例使用 address-of 運算符將指針參數(shù)傳遞給函數(shù):
// expre_Address_Of_Operator3.cpp // compile with: /EHsc // Demonstrate address-of operator & #include <iostream> using namespace std; // Function argument is pointer to type int int square( int *n ) { return (*n) * (*n); } int main() { int mynum = 5; cout << square( &mynum ) << endl; // pass address of int }
Output
25
上一篇:簡單掌握C++編程中的while與do-while循環(huán)語句使用
欄 目:C語言
本文標題:講解C++編程中Address-of運算符&的作用及用法
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2571.html
您可能感興趣的文章
- 04-02c語言沒有round函數(shù) round c語言
- 01-10深入理解C++中常見的關鍵字含義
- 01-10使用C++實現(xiàn)全排列算法的方法詳解
- 01-10c++中inline的用法分析
- 01-10用C++實現(xiàn)DBSCAN聚類算法
- 01-10全排列算法的非遞歸實現(xiàn)與遞歸實現(xiàn)的方法(C++)
- 01-10C++大數(shù)模板(推薦)
- 01-10淺談C/C++中的static與extern關鍵字的使用詳解
- 01-10深入C/C++浮點數(shù)在內(nèi)存中的存儲方式詳解
- 01-10深入理解C/C++混合編程


閱讀排行
本欄相關
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機閱讀
- 04-02jquery與jsp,用jquery
- 01-10C#中split用法實例總結
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10delphi制作wav文件的方法