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