C 中的引用

2021-04-14 00:00:43 字數 1224 閱讀 7222

最近重新看c++,看到些以前沒注意的dd,溫故而知新,暫且記下。

引用是能自動間接引用的一種指標,即不必使用間接引用運算子「*」,就可以得到乙個引用值。引用可以為變數起別名,它主要用作函式引數以及函式的返回型別。

1 引用的定義

如  int i;      int &j=i;   j是i的引用。

(1) 定義引用時,必須立即對它進行初始化,不能定義後再賦值。

如  int i;  int &j;  j=i;    這樣是錯誤的,應該像上面示例中那樣定義。

(2)  引用實際上是一種隱式指標,和顯式指標不同的是,每次使用引用的變數時,可以不用書寫間接引用運算子"*",因此就好像使用變數的另乙個別名一樣使用引用,但引用的本質不是別名,而是變數的乙個指標(隱式的)。

(3)  引用不可以重新賦值,不可使其作為另乙個變數的別名。

如  int i,k;   int &j=i;  j=&k;     //最後一句重新賦值,錯誤。

(4)  當使用&運算子去乙個引用的位址時,其值為所引用的變數的位址。

如  int  num = 0;   int  &ref = num;   int  *p = &ref;

p中儲存的是變數num的位址。如果語句為  int  *p = ref;則編譯出錯。

可能會有人不明白,引用的本質不是隱式指標,也就是指標嗎?那應該是 ref (not  &ref)表示num 的位址才對啊,這樣寫有什麼不對呢。呵呵,前面說過 引用使用起來和別名一樣,代表它所引用的變數的值,即 ref 就代表 num,所以要表示 &num(即num 的位址),當然不能也用 ref 表示啊,要不 ref 到底表示 num  or  &num。既然它做別名用,那就像別名一樣用  &ref 表示 &num 吧。(這是偶自己的理解哦^^^^^^^^^)

2  引用引數

void swap(int &m,int &n)     //引用坐函式引數

main()

3  引用返回值

函式可以返回乙個引用,將函式說明為返回乙個引用的主要目的是:可以將該函式用在 = 的左邊。如:

int &index(int i);  //將函式返回型別定義為引用

index(m) = 100;  //將函式放在 = 左邊,重新賦值,此時 index(m) 的值為100

C 中的引用

例1 int a int ra a 定義引用ra,它是變數a的引用,即別名 說明 1 在此不是求位址運算,而是起標識作用。2 型別識別符號是指目標變數的型別。3 宣告引用時,必須同時對其進行初始化。4 引用宣告完畢後,相當於目標變數名有兩個名稱,即該目標原名稱和引用名,且不能再把該引用名作為其他變數...

C 中的引用

引用是c 引入的新語言特性,是c 常用的乙個重要內容之一,正確 靈活地使用引用,可以使程式簡潔 高效。我在工作中發現,許多人使用它僅僅是想當然,在某些微妙的場合,很容易出錯,究其原由,大多因為沒有搞清本源。故在本篇中我將對引用進行詳細討論,希望對大家更好地理解和使用引用起到拋磚引玉的作用。一 引用簡...

C 中的引用

c 中的引用 1.引用作為返回值 c 中沒有高效率的物件返回,所以返回值一定不要是乙個直接的物件,除非是 return new a 這種模式好象在vc 中專門做過優化的.當返回乙個變數時,會產生拷貝。當返回乙個引用時,不會發生拷貝,你可以將引用看作是乙個變數的別名,就是其他的名字,引用和被引用的變數...