c 中的引用

2022-06-07 07:54:09 字數 1965 閱讀 8661

寫在前面:引用變數是乙個別名,也就是說,它是某個已存在變數的另乙個名字。一旦把引用初始化為某個變數,就可以使用該引用名稱或變數名稱來指向變數。

引用很容易與指標混淆,它們之間有三個主要的不同:

1.引用作為函式引數,以擴充函式傳遞資料的功能。例如:

#include using

namespace

std; //

函式宣告

void swap(int& x, int&y);

intmain () //

函式定義

void swap(int& x, int&y)

交換前,a 的值: 100

交換前,b 的值:

200交換後,a 的值:

200交換後,b 的值:

100

c++ 函式傳參:

(1)將變數名作為實參和形參。這時傳給形參的是變數的值,傳遞是單向的。如果在執行函式期間形參的值發生變化,並不傳回給實參。因為在呼叫函式時,形參和實參不是同乙個儲存單元。

(2) 傳遞變數的指標。形參是指標變數,實參是乙個變數的位址,呼叫函式時,形參(指標變數)指向實參變數單元。這種通過形參指標可以改變實參的值。

(3) c++提供了 傳遞變數的引用。形參是引用變數,和實參是乙個變數,呼叫函式時,形參(引用變數)指向實參變數單元。這種通過形參引用可以改變實參的值。

如果上面的例子不用引用型別作為引數的話:

#include using

namespace

std; //

函式宣告

void swap(int x, int

y);int

main () //

函式定義

void swap(int x, int

y)

交換前,a 的值:100

交換前,b 的值:

200交換後,a 的值:

100交換後,b 的值:

200

2.引用作為返回值

當函式返回乙個引用時,則返回乙個指向返回值的隱式指標。這樣,函式就可以放在賦值語句的左邊。例如:

#include using

namespace

std;

double vals = ;

double& setvalues( int

i )

intmain ()

setvalues(

1) = 20.23; //

改變第 2 個元素

setvalues(3) = 70.8; //

改變第 4 個元素

cout

<< "

改變後的值

"

return0;

}

改變前的值

vals[

0] = 10.1

vals[

1] = 12.6

vals[

2] = 33.1

vals[

3] = 24.1

vals[

4] = 50

改變後的值

vals[

0] = 10.1

vals[

1] = 20.23

vals[

2] = 33.1

vals[

3] = 70.8

vals[

4] = 50

當返回乙個引用時,要注意被引用的物件不能超出作用域。所以返回乙個對區域性變數的引用是不合法的,但是,可以返回乙個對靜態變數的引用。

int&func()

參考:

C 中的引用

最近重新看c 看到些以前沒注意的dd,溫故而知新,暫且記下。引用是能自動間接引用的一種指標,即不必使用間接引用運算子 就可以得到乙個引用值。引用可以為變數起別名,它主要用作函式引數以及函式的返回型別。1 引用的定義 如 int i int j i j是i的引用。1 定義引用時,必須立即對它進行初始化...

C 中的引用

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

C 中的引用

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