在C 中,引用的詳解

2021-08-21 14:05:42 字數 1704 閱讀 5315

1、對於『』&『,這個字元』,大家都很熟悉,在c語言中,它是取位址的意思,在位運算中,它是『與』的意思,今天要說的就是在c++中,引用的意思

2、對於我這個一直用c語言程式設計的小白來說,一看到&這個字元便會想到取位址的意思,以至於很多時候都不理解為什麼在定義函式的形式引數時,要定義成「取位址」,後來經查資料 ,才知道是取位址的意思,然而,在看到這個字元時,首先想到的還是取位址的意思

3、在c語言中,指標是其靈魂,但是在進行程式設計開發時,90%的工程師基本上都是栽在指標的問題上,比如,記憶體洩漏就是其經常出現的現象,因此,在後續的研發時 ,不提倡使用指標,那麼這時如何採用一種方法來代替指標呢?作為c語言的公升級版c++,很好的解決了這個問題,那就是『』引用『』

4、引用和指標的區別:

▲ 指標在定義時,可以不初始化,而引用在定義時,必須初始化

▲指標變數指向的位址可以根據需要動態修改,而引用只要和某個變數繫結後就不能修改

▲指標本身需要4個位元組存放位址,而引用本身不用分配記憶體空間

▲使用sizeof求指標變數的大小總是4個位元組,表示位址所佔的空間是4個位元組,而sizeof引用的大小不是固定的,其大小與所

引用的源頭變數有關

5、引用的簡介:

引用就是某一變數(目標)的乙個別名,對引用的操作與對變數直接操作完全一樣。

引用的宣告方法:型別識別符號 &引用名=目標變數名;

eg:    int & kk = pa;   //定義引用kk,它是變數pa的引用,即別名

注意:(1)&在此不是求位址運算,而是起標識作用。

(2)型別識別符號是指目標變數的型別。

(3)宣告引用時,必須同時對其進行初始化。

(4)引用宣告完畢後,相當於目標變數名有兩個名稱,即該目標原名稱和引用名,且不能再把該引用名作為其他變數名的別名。

kk=1; 等價於 pa=1;

(5)宣告乙個引用,不是新定義了乙個變數,它只表示該引用名是目標變數名的乙個別名,它本身不是一種資料型別,因此引用本身不佔儲存單元,系統也不給引用分配儲存單元。故:對引用求位址,就是對目標變數求位址。&ra與&a相等。

(6)不能建立陣列的引用。因為陣列是乙個由若干個元素所組成的集合,所以無法建立乙個陣列的別名。

6、引用的應用:

(1)引用作為引數:

引用的乙個重要作用就是作為函式的引數。以前的c語言中函式引數傳遞是值傳遞,如果有大塊資料作為引數傳遞的時候,採用的方案往往是指標,因為 這樣可以避免將整塊資料全部壓棧,可以提高程式的效率,那麼在c++中,就由引用替代了這裡指標的作用

void swap(char & p1,char & p2)

char tmp;

tmp = p1;

p1 = p2;

p2 = p1;

(2)常引用

常引用宣告方式:const 型別識別符號 &引用名=目標變數名;

用這種方式宣告的引用,不能通過引用對目標變數的值進行修改,從而使引用的目標成為const,達到了引用的安全性。

const  int & pa;

(3)引用作為返回值

要以引用返回函式值,則函式定義時要按以下格式:

型別識別符號 &函式名(形參列表及型別說明)

說明:(1)以引用返回函式值,定義函式時需要在函式名前加&

(2)用引用返回乙個函式值的最大好處是,在記憶體中不產生被返回值的副本。

(4)、引用和多型

引用是除指標外另乙個可以產生多型效果的手段。這意味著,乙個基類的引用可以指向它的派生類例項。

C 中引用詳解

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

C 引用的詳解

引用的應用 1 引用作為引數 引用的乙個重要作用就是作為函式的引數。以前的c語言中函式引數傳遞是值傳遞,如果有大塊資料作為引數傳遞的時候,採用的方案往往是指標,因為這樣可以避免將整塊資料全部壓棧,可以提高程式的效率。但是現在 c 中 又增加了一種同樣有效率的選擇 在某些特殊情況下又是必須的選擇 就是...

C 引用詳解

引用的概念 引用 就是某一變數 目標 的乙個別名,對引用的操作與對變數直接操作完全一樣。引用的宣告方法 型別識別符號 引用名 目標變數名 如下 定義引用ra,它是變數a的引用,即別名。int a int ra a 1 在此不是求位址運算子,而是起標識作用。2 型別識別符號是指目標變數的型別。3 宣告...