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...