C 引用概念

2021-09-18 08:26:42 字數 1306 閱讀 7657

這幾天看effective c++裡面不停的提到引用把我弄得有些懵,就來整理一下引用的部分知識

引用是某個變數的別名

比如乙個人的名字是張三,他的小名三三就是乙個別名

張三是他,三三也是他

為了說明這個例項,我們舉個例子:

int zhangsan;

int&

ceshi()

intmain()

可以把賦值看成是張三的年齡,取位址看成張三的身份證號

輸出如下

6

0x109ee9078

60x109ee9078

7

可以看到,三三和張三就是乙個人,他們年齡一樣身份證號也一樣,三三年齡增加一歲就是張三年齡增加一歲

也就是定義乙個引用並不是定義了乙個新的變數,並沒有為這個引用分配位址空間,對引用的操作就是對這個變數本身的操作

就跟你打了張三一拳,老師問你是不是你打的三三,你回答你打的是張三,老師就知道罪魁禍首就是你了一樣

沒有張三這個人的時候,三三會存在嗎?

班上連張三這個人都沒有,你叫三三會有人理你嗎?

當然不會

所以,在引用的時候,我們需要為其賦初始值,告訴程式這個別名是哪個物件的別名

int

& sansan;

報錯:

declaration of reference variable 'sansan' requires an initializer
你在班上瘋狂的叫三三,會有人提醒你,沒有三三這個人

在effective c++裡面經常提到用pass by reference傳遞物件代替pass by value,其實就是以傳引用的方式代替傳值的方式

比如乙個比較經典的交換值的函式

在排隊的時候,要交換張三李四的位置

void

change_position

(int

& a,

int& b)

intmain()

輸出:

10 12

12 10

交換了位置

可以看到在change_position函式內對別名a,b的操作沒有加『&』符號,因為一開始你給張三取了別名叫三三,&是代表sansan是zhangsan的別名,在取的時候你會說別名是三三,在日後用到的時候就不需要說取乙個別名三三了,也就是之後操作這個別名的資料的時候不需要再帶乙個『&』符號了

C 引用 概念及用法

一.概念 引用是變數的別名,對引用的操作與對變數的操作完全一樣。引用符號 與c語言中取位址符號一樣,含義不同。引用的方法 型別識別符號 引用名 變數名 例如 int a int ra a 定義引用ra,它是變數a的引用,即別名 二.引用例項 1.引用作為函式引數 void swap int p1,i...

c 中引用相關概念總結

1 先從下面這兩段 的執行結果開始看起 int a 10 在記憶體上開闢4個位元組,a就代表這個4個位元組記憶體 int p a 讓乙個指標 指向這個4個位元組的空間 p 20 cout a a endl 20int b a 定義乙個引用b 指向a,b此時就是變數的a的別名 b 40 cout a ...

C 引用的理解和概念

引用變數是乙個別名,也就是說,它是某個已存在變數的另乙個名字。一旦把引用初始化為某個變數,就可以使用該引用名稱或變數名稱來指向變數。引用很容易與指標混淆,它們之間有三個主要的不同 試想變數名稱是變數附屬在記憶體位置中的標籤,您可以把引用當成是變數附屬在記憶體位置中的第二個標籤。因此,您可以通過原始變...