C 引用作用詳解

2021-09-30 00:19:26 字數 1450 閱讀 8607

c++中的引用,就像是對這個記憶體位址上起了乙個別名。

例,如下**所示:

int a=10;

//實際上程式為此做出指標

//相當於 int * const b= &a;

//同樣說明它的指向不可以更改,但是值可以更改

int&b=a;

//正確

int& c=a;

//正確

//下面兩行是錯誤的引用,引用必須立即初始化

int&d;

d=a;

看如上的**:

a 相當於你的大名;b 和c 相當於你的小名。

這麼思考: 假設你叫張三,小名叫三兒和小三,首先確認乙個問題,叫張

三、三兒和小三都是在叫你對吧。即程式中大名(張三)和小名(三兒和小三)對應的都是同乙個資料。那麼厲害的結論來了:叫張三或者三兒或者小三去脫掉衣服或者穿上衣服,那麼三個對應同乙個人,是不是這三個名字對應的同乙個人都脫掉衣服或者穿上衣服,在程式中即修改了同一記憶體位址下的值。

1.基本型別的引用(看如下**)

#include

using

namespace std;

2.結構體型別的引用(看如下**)
#include

using

namespace std;

//定義乙個名叫coor的結構體,這是乙個座標。

typedef

struct

coor;

intmain

(void

)

3.指標型別的引用(看如下**)

指標型別的引用是引用當中最為複雜,最難理解的一部分,同時在寫法形式上也有著與眾不同的地方。

定義 : 型別 *&指標引用名 = 指標;

#include

using

namespace std;

intmain

(void

)

4.引用作函式引數(看如下**)

沒有學習引用之前的程式

//將兩個值進行交換

void

fun(

int*a,

int*b)

//形參為兩個整型的指標變數

int x =

10,y =20;

fun(

&x,&y)

;//在主函式中呼叫時,傳過去的實參需要寫成 取位址a,取位址b,比較麻煩,也不易理解。

學習引用之後應該做成的程式
void fun (

int&a,

int&b)

//形參為兩個整型的引用

int x =

10,y =20;

fun(x,y)

;//在主函式中呼叫時,實參傳過去後a是x的別名,b是y的別名。

引用 引用作引數

如果形參為引用型別,則形參是實參的別名,的使用說明此處只是原引數的另乙個名字而已 1.值傳遞 如果形參為非引用的傳值方式,則生成區域性臨時變數接收實參的值。void swap int left,int right 值傳遞的方式無法實現交換,因為傳參時對於引數left和right拷貝一臨時副本,交換的...

C 引用作為函式引數

有了變數名,為什麼還需要乙個別名呢?c 之所以增加引用型別,主要是把它作為函式引數,以擴充函式傳遞資料的功能。到目前為止我們介紹過函式引數傳遞的兩種情況。1 將變數名作為實參和形參 這時傳給形參的是變數的值,傳遞是單向的。如果在執行函式期間形參的值發生變化,並不傳回給實參。因為在呼叫函式時,形參和實...

C 引用作為函式引數

有了變數名,為什麼還需要乙個別名呢?c 之所以增加引用型別,主要是把它作為函式引數,以擴充函式傳遞資料的功能。一下是三種函式傳遞情況 1 將變數名作為實參和形參 這時傳給形參的是變數的值,傳遞是單向的。如果在執行函式期間形參的值發生變化,並不傳回給實參。因為在呼叫函式時,形參和實參不是同乙個儲存單元...