欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2016年01月14日 16:46:36   投稿:goldensun  
這篇文章主要介紹了C++編程中Address-of運算符&的作用及用法,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下

語法

& cast-expression

備注
一元 address-of 運算符 (&) 采用其操作數(shù)的地址。address-of 運算符的操作數(shù)可以是函數(shù)指示符,也可以是指定不是位域且不使用 register 儲存類說明符聲明的對象的左值。
address-of 運算符僅適用于具有基本、結(jié)構(gòu)、類或在文件范圍級別聲明的聯(lián)合類型的變量,或僅適用于下標數(shù)組引用。在這些表達式中,可在 address-of 表達式中添加或提取不包括 address-of 運算符的常數(shù)表達式。
當(dāng)應(yīng)用于函數(shù)或左值時,該表達式的結(jié)果將是派生自操作數(shù)類型(右值)的指針類型。例如,如果操作數(shù)的類型為 char,則表達式的結(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 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::*。
僅當(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 int
int square( int *n ) {
  return (*n) * (*n);
}

int main() {
  int mynum = 5;
  cout << square( &mynum ) << endl;  // pass address of int
}

Output

25

相關(guān)文章

  • C++淺析構(gòu)造函數(shù)的特性

    C++淺析構(gòu)造函數(shù)的特性

    構(gòu)造函數(shù)主要作用在于創(chuàng)建對象時為對象的成員屬性賦值,構(gòu)造函數(shù)由編譯器自動調(diào)用,無須手動調(diào)用;析構(gòu)函數(shù)主要作用在于對象銷毀前系統(tǒng)自動調(diào)用,執(zhí)行一 些清理工作
    2022-07-07
  • 基于matlab MFCC+GMM的安全事件聲學(xué)檢測系統(tǒng)

    基于matlab MFCC+GMM的安全事件聲學(xué)檢測系統(tǒng)

    這篇文章主要為大家介紹了基于matlab MFCC+GMM的安全事件聲學(xué)檢測系統(tǒng)實現(xiàn)及源碼示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • 淺析C++調(diào)用Java的Jar包(帶參數(shù))問題

    淺析C++調(diào)用Java的Jar包(帶參數(shù))問題

    這篇文章主要介紹了C++調(diào)用Java的Jar包(帶參數(shù))問題,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • C語言實現(xiàn)飛機游戲(1)

    C語言實現(xiàn)飛機游戲(1)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)飛機游戲的第一部分,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Qt中JSON操作的具體使用

    Qt中JSON操作的具體使用

    本文主要介紹了Qt中JSON操作的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • C++ 中CListCtrl的每個項都顯示不同的提示信息

    C++ 中CListCtrl的每個項都顯示不同的提示信息

    這篇文章主要介紹了C++ 中CListCtrl的每個項都顯示不同的提示信息的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • C語言菜鳥基礎(chǔ)教程之Hello World

    C語言菜鳥基礎(chǔ)教程之Hello World

    C語言是一門通用計算機編程語言,應(yīng)用廣泛。C語言的設(shè)計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產(chǎn)生少量的機器碼以及不需要任何運行環(huán)境支持便能運行的編程語言。
    2017-10-10
  • 分享一下8年C++面向?qū)ο笤O(shè)計的經(jīng)驗體會

    分享一下8年C++面向?qū)ο笤O(shè)計的經(jīng)驗體會

    關(guān)于C++程序設(shè)計的書藉非常多,本章不講C++的語法,只講一些小小的編程道理。如果我能早幾年明白這些小道理,就可以大大改善數(shù)十萬行程序的質(zhì)量了
    2017-07-07
  • 關(guān)于C/C++中static關(guān)鍵字的作用總結(jié)

    關(guān)于C/C++中static關(guān)鍵字的作用總結(jié)

    以下是對C/C++中static關(guān)鍵字的作用進行了總結(jié)介紹,需要的朋友可以過來參考下
    2013-09-09
  • C++基于OpenCV實現(xiàn)手勢識別的源碼

    C++基于OpenCV實現(xiàn)手勢識別的源碼

    這篇文章主要介紹了C++基于OpenCV手勢識別的實現(xiàn)源碼,這里用到背景減法模型知識,具體實例代碼跟隨小編一起看看吧
    2021-09-09

最新評論