引用以及引用的實質

tiankaicsd發表於2020-11-01

c++與c語言函式中引數的傳遞方式是傳值。在棧中重新為引數分配記憶體,而把實參的數值傳遞到新分配的記憶體中。但重新分配空間會引起執行效率的大大下降,因此c++推出一種新的資料型別–引用。引用簡單來說就是別名,例如有一種蔬菜有的人叫它“蕃茄”有的人叫他“番茄”但從本質上來說“番茄和蕃茄”指的是同一樣東西。
引用不是定義一個新的變數,而是給一個已經定義的變數重新起一個別名,主要用於函式之間的資料傳遞。定義格式為:型別&引用變數名=已經定義過的變數名,例如:int a; int &b=a; 如此b就是a的別名。
引用主要有這幾個作用:
1.引用作為函式的形參
2.引用作為函式的返回值
3.返回值為引用的函式作為左值
注意
(1)對於陣列只能引用陣列元素,不能引用陣列因為陣列名是陣列的地址。
(2)不能定義引用的引用(引用也是地址),所以當函式的引數為引用時,引用不能作為實參。
(3)沒有空引用例如 int &x;
()const引用:引用在內部存放的是被引用物件的地址,不可定址的值是不能引用的,當引用作為形參時,實參也不能使用不可定址的值,更不能進行型別的轉換。但是const引用不同,它是隻讀的,編譯器實現const時會產生一個臨時物件,但使用者不能訪問它。所以const能實現不可定址的值。因此const引用作為形參時,實參也能使用不可定址的值。

引用的實質:應用的實質從彙編的角度來說就是指標

int  main()
{
 int a=10;
 int &b = a;
 int *c = &a;
 return 0;
}

在這裡插入圖片描述

相關文章