国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

講解C++編程中Address-of運算符&的作用及用法

2020-05-23 14:10:33
字體:
供稿:網(wǎng)友
這篇文章主要介紹了C++編程中Address-of運算符&的作用及用法,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
 

語法

& cast-expression

備注
一元 address-of 運算符 (&) 采用其操作數(shù)的地址。address-of 運算符的操作數(shù)可以是函數(shù)指示符,也可以是指定不是位域且不使用 register 儲存類說明符聲明的對象的左值。
address-of 運算符僅適用于具有基本、結(jié)構(gòu)、類或在文件范圍級別聲明的聯(lián)合類型的變量,或僅適用于下標(biāo)數(shù)組引用。在這些表達(dá)式中,可在 address-of 表達(dá)式中添加或提取不包括 address-of 運算符的常數(shù)表達(dá)式。
當(dāng)應(yīng)用于函數(shù)或左值時,該表達(dá)式的結(jié)果將是派生自操作數(shù)類型(右值)的指針類型。例如,如果操作數(shù)的類型為 char,則表達(dá)式的結(jié)果為指向 char 的類型指針。address-of 運算符(應(yīng)用于 const 或 volatile 對象)的計算結(jié)果為 const type * 或 volatile type *,其中 type 是原始對象的類型。
在將 address-of 運算符應(yīng)用于限定名時,結(jié)果將取決于 qualified-name 是否指定靜態(tài)成員。如果是這樣,則結(jié)果為指向成員聲明中指定的類型的指針。如果該成員不是靜態(tài)的,則結(jié)果為指向由 qualified-class-name 指示的類的成員 name 的指針。
以下代碼段說明了結(jié)果的不同之處,取決于該成員是否為靜態(tài)的:

// expre_Address_Of_Operator.cpp// C2440 expectedclass 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)成員,因此表達(dá)式 &PTM::fValue 產(chǎn)生類型 float * 而不是類型 float PTM::*。
僅當(dāng)明確要引用的函數(shù)的版本時,才能采用重載函數(shù)的地址。有關(guān)如何獲取特定重載函數(shù)的地址的信息,請參閱重載函數(shù)的地址。
通過將 address-of 運算符應(yīng)用于引用類型,可獲得與將該運算符應(yīng)用于引用綁定到的對象所獲得的結(jié)果相同的結(jié)果。例如:

// 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 intint square( int *n ) {  return (*n) * (*n);}int main() {  int mynum = 5;  cout << square( &mynum ) << endl;  // pass address of int}

Output

25


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 罗江县| 天津市| 邢台市| 大理市| 安塞县| 临泽县| 临夏县| 忻城县| 东港市| 黔西| 高州市| 防城港市| 明光市| 太仆寺旗| 阿拉善左旗| 霸州市| 望谟县| 乐清市| 老河口市| 沙雅县| 巴彦淖尔市| 郴州市| 仙桃市| 吴江市| 封丘县| 金堂县| 博野县| 永兴县| 东乌珠穆沁旗| 河南省| 扶绥县| 逊克县| 大名县| 平阴县| 平潭县| 北流市| 桐城市| 荃湾区| 梨树县| 岢岚县| 安化县|