C 語法之引用

2021-10-03 09:20:00 字數 1928 閱讀 2600

1.引用的概念;

(1)是c++中新增加的概念

所以當引用在c編譯器(如gcc編譯器)中編譯的時候,一般會出錯

(2) 引用可以看作乙個已定義變數的別名,切記引用不能單獨定義。

(3) 引用的語法:type& name = var

(4)當引用做函式引數的時候(引用作為函式引數宣告時不進行初始化)

例題**;

#include

#include

using

namespace std;

intmain

(void

)

2.引用的作用:

(1)引用可以做函式引數

普通引用在宣告時必須用其它的變數進行初始化,

引用作為函式引數宣告時不進行初始化

例題**:

#include

#include

using

namespace std;

void

swap

(int a,

int b)

//方式一, 使用指標

void

swap1

(int

*a,int

*b)//方式二, 使用引用

void

swap2

(int

&a,int

&b)int

main

(void

)

3.引用的意義:

(1)引用作為其它變數的別名而存在,因此在一些場合可以代替指標

(2)引用相對於指標來說具有更好的可讀性和實用性

例題**:

int

swap

(int

&a,int

&b)int

swap

(int

*a,int

*b)

這兩種**從功能上是等同的,但引用卻比指標更容易理解和使用

4.引用的本質

在使用引用的時候,你是否思考過下面這幾個問題?

(1)對同一記憶體空間可以用引用取好幾個名字嗎?

(2)引用它有沒有自己的空間?

(3)比如b 是 a 的別名(int &b = a;),那在執行的過程中 c++編譯器後面做了什麼工作?

例題講解**:

#include

#include

using

namespace std;

/*int swap1(int &a, int &b)

*/int

swap2

(int

*const _a,

int*

const _b)

intmain

(void

)

本質:

1)引用在c++中的內部實現是乙個常指標 type& name 《===》type* const name

2)c++編譯器在編譯過程中使用常指標作為引用的內部實現,因此引用所占用的空間大 小與指標相同。

3)從使用的角度,引用會讓人誤會其只是乙個別名,沒有自己的儲存空間。這是c++ 為了實用性而做出的細節隱藏

void

func

(int

&var)

//電腦上會私下裡把上面的**換成下面的**來執行

void

func

(int

*const var)

結論:

當實參傳給形參引用的時候,只不過是c++編譯器幫我們程式設計師手工取了乙個實參地 址,傳給了形參引用(常量指標)

C 之引用揭秘

測試 第二條彙編指令將8這個值儲存到變數a在棧中的空間。第三條指令將變數a的位址放到暫存器eax中。可以看到,eax的值為0x29fefc,這個位址為虛擬位址空間的位址。游標處彙編指令將該值壓入棧中,作為呼叫函式fun 的引數 順表提一下,為什麼指標總是4位元組大小,32位機器,記憶體最大4g,32...

C 之引用變數 !

引用 reference 是c 的一種新的變數型別,是對c的乙個重要補充。引用的作用是給乙個變數起乙個別名,例如有乙個變數a,想給他起乙個別名b,可以寫成 int a int b a 這樣宣告後,代表a和b就是同一變數單元,而 不是代表取位址符號,而是引用宣告符,說明定義了b可並沒有為它另開闢記憶體...

C 學習之引用

include using namespace std void main b 14 printf a d b d n a,b 14 14 system pause 輸出 a 12 a 14 b 14 請按任意鍵繼續.輸出 11 11 請按任意鍵繼續.實現兩個數字之間的交換 void swap in...