C 中引用的常見用法

2021-08-21 03:58:55 字數 1915 閱讀 8978

在c++中引用型別是乙個強大的存在,它一定程度上規避了指標帶來的風險,並且使得函式引數之間的傳值和通訊變得異常靈活。

1.引用的概念

在c++中,可以定義引用如下:

1

intn;

2int &r = n;

這樣定義以後,r就是int型變數n的乙個引用。可以理解為給變數n取了乙個「別名」叫r,從此r跟n便繫結在一起了。修改r的值,實際上也就等於修改了n的值;使用r,實際上也就等於使用n。

需要注意的是:引用型別在定義時就必須初始化(如上述**將其初始化為n)——這是很自然的,試想一下我們如果說給某一物品取了個別名,但卻不指定究竟是給什麼東西取的別名,那「取別名」這件事就毫無意義了。

以下示例**出自《新標準c++程式設計教程》:

1 #include 2

using

namespace

std;

3int

main()

4

2.引用作為函式的返回值

函式的返回值也可以是引用。使用引用作為函式的返回值,能夠在運算子過載發揮巨大作用。

1 #include 2

using

namespace

std;

3int n = 4; //

n是全域性變數

4int &setvalue()

7int

main()

8

3.引用作為函式的形參

如果將函式的形參定義為引用型別,則當函式被呼叫時,給函式傳入的就是實參的引用。若在函式體裡改變了傳入引數的值,則處於函式外部的實參值也將改變。

1 #include 2

using

namspace std;

3void swap(int &a, int

&b)

10int

main()

11

輸出結果為:

in swap: a = 5 b = 4
4.常引用

若在定義引用時加上const關鍵字,則該引用就成為常引用。如:

1

intn;

2const

int &r = n;

常引用和普通引用的區別在於不能通過常引用去修改其引用的內容。注:不是常引用的內容不能被修改,只是不能通過常引用修改其內容而已。如:

1

int n = 100;2

const

int &r =n;

3 r = 200; //

編譯出錯,不能通過常引用修改其引用的內容

4 n = 300; //

沒問題,n的值變為300

const t & 和t &是不同的型別。t & 型別的引用或t型別的變數可以用來初始化const t & 型別的引用。const t 型別的常變數和const t & 型別的引用則不能用來初始化t & 型別的引用,除非進行強制型別轉換。例如下面的程式段:

1

intmain()

2

5.總結

在c++中,宣告乙個變數為引用,必須對其進行初始化,初始化可以是變數名或者具體值(e.g. int &a = 2; char &b = 'b')。引用可作為函式的返回值,這個時候可將引用作為左值為其賦值。引用可作為函式的形參,當函式被呼叫時,傳遞給函式的實際上是實參的引用而不是拷貝。因此在函式中若修改了傳入引數的值,則被引用的變數值也將發生改變。可用const關鍵字來定義常引用,不可通過常引用來修改被引用變數的值。

C 中引用的用法

因為c 的所有物件都是從object派生,所以c 物件的建立,類似c 中指標的建立,如果按照c 的模式來理解c 的引用關係就非常簡單了。c 物件之間的傳遞,始終是傳遞的是指標 按照c 的理解 所以在函式引數傳遞過程中就需要考慮到應用的問題了,也就是給指標的位址重新賦值。看看我這個c 的新手自己寫的d...

C 中MessageBox的常見用法

messagebox用法 訊息框是個很常用的控制項,屬性比較多,本文列出了它的一些常用方法,及指出了它的一些應用場合。1.messagebox 這是乙個最簡單的訊息框!2.messagebox 這是乙個有標題的訊息框!標題 3.messagebox 這是乙個確定 取消的訊息框!標題 mb okcan...

C 中的map常見用法

map是stl的乙個關聯容器,它提供一對一 其中第乙個可以稱為關鍵字,每個關鍵字只能在map中出現一次,第二個可能稱為該關鍵字的值 的資料 處理能力,由於這個特性,它完成有可能在我們處理一對一資料的時候,在程式設計上提供快速通道。這裡說下map內部資料的組織,map內部自建一顆紅黑樹 一 種非嚴格意...