C 裡的引用 「 「

2021-10-10 06:26:36 字數 1349 閱讀 4129

「&」在c++裡的三種用法:

char a=10;

char b=20;

char c=

0;

1.作為二目運算子,位與符。

c=a&b;
2.單目運算子,取位址符。

char *p=0;

p=&a;

3.型別與識別符號之間就是引用,x是a的別名;

char &x=a;
引用:

void

fun(int &x)

//void fun(int * const x)

int main()

引用的特點:

1.沒有空引用,必須給予初始化,不能 int &c;

2.一旦引用成為變數的別名時,整個生存期內一直為其別名,不能改變。

引用和指標的區別:

在語法層面來看,指標必須存放位址,指標必須通過解引用才能訪問指向的位址,但是引用就是某個變數的別名,通過對引用的改變就可以改變對應的變數,從**的底層來看,引用是乙個自身為常性的指標,它的處理和指標沒有差別,在語法層面來看,引用就是指標的乙個語法糖。

以引用的方式返回乙個物件或者變數:

這個物件或者變數的生存期不受函式的影響,函式結束,物件或者變數仍然存活。例如:1)全域性物件 2)區域性變數加靜態關鍵字 (.data區) 3) 返回值為引用的函式作為左值。引用進,引用出。

普通引用:

int a =10;

int &b=a;

//int *const b =&a;//可以通過b改變a

const int &c = a;

//const int *const c =&a;//不能通過c改變a

常引用:

如果是乙個常變數,不能拿普通引用去引用,必須拿常引用去引用。

const int a=10;

const int &b=a;

//常引用

//一種編譯器: const int * const b =&a;

//另一種編譯器:int tmp =x; const int &b =tmp;

int const

&c=a;

//常引用的另一種形式

常引用去引用字面常量時,底層首先定義了乙個內建型別的整型變數tmp,x引用的是tmp的空間。

const int &x =10;

//引用字面常量

//int tmp = 10;

//const int &x =tmp;

漫談C 裡的「引用」

引用 是c 新增的概念,注意這裡的 並不是 取位址 的含義。引用 reference 簡單的說就是乙個物件的別名。用物件來初始化引用後,那麼物件的名字或引用的名字都指向 refer to 該物件,如 int a 10 int ra a ra是a的別名 人們常常會將引用和指標混淆,原因大概是因為c 編...

C 裡的父類物件引用子類例項的理解

物件導向的多型 父類可以引用子類物件。父類引用只能呼叫子類繼承父類的方法,父類引用不能呼叫子類獨有的方法。people newpeople new man bilu 如在 人類 類中引用乙個 男人 例項 子類引用不能直接賦值父類物件,除非將父類物件進行強制轉換 編譯ok,執行異常 man newma...

從彙編的角度看C 裡的引用和指標

c 裡有引用和指標,使用過c 的應該都知道它們的異同點。本文將從彙編的角度去觀察這2者的本質。使用也非常簡單,在左側編寫c 在右側就會直接顯示對應的組合語言,也可以根據需要的平台來選擇對應的編譯器 我們使用的c 如下,比較簡單 int main void 選擇的編譯器是x86 64 gcc 9.2,...