C 學習(三) 引用

2021-06-25 20:36:02 字數 1139 閱讀 6677

為了說明c++中引用這個概念引入的意義,我們不妨從乙個最基礎的c語言交換兩個變數的值的函式說起

swap(int *a,int *b)

呼叫時,使用如下語句

swap(&a,&b);
這裡,傳遞的是變數a和b的位址,我們要交換a和b的值,函式卻用的是a和b的位址作為引數,感覺沒有那麼直觀形象。

c++引入了「引用「這個概念。

先看看其基本形式:

int b=1;

int &a=b;

這裡,定義了乙個b的引用a。在c++內部其實是定義了乙個指向變數b的const指標a,即int* const  a=b,a指向的位址不可變,a指向位址的變數的值可變。

接著,若有:a=5;

則c++內部會進行 *a=5操作,從而成功地將b的值改變成為了5。說白了,a和b就是記憶體中的同一塊位址空間,b就是變數a的別名,外號而已。

執行程式:

#include int main(int argc, char *argv)

得到結果如下

此外,如果我們可以在c++中宣告const引用,讓變數具有唯讀屬性(不同於常變數,沒有進入符號表,只是不能通過直接訪問改變其值)。

因此,如果我們將上面的程式 int& b=a語句改為const int &b = a,其它不變,編譯器會報錯,無法通過;

但是下面的程式是可以通過的:

#includeint main()

輸出結果為 a=8。這說明雖然const引用讓變數a擁有了唯讀屬性,但是它仍然可以通過指標間接定址的方式改變其變數值。

最後,給出了使用」引用「的swap交換函式和呼叫方式:

//函式體

swap(int &a,int &b)

//呼叫方式

swap(a,b);

跟我們直觀想象的形式一樣,一目了然有木有。

C 學習(6) 引用

作用 給變數起別名 語法 資料型別 別名 原名 includeusing namespace std int main 引用一旦初始化,就不可以更改了 作用 函式傳參時,可以利用引用的技術讓形參修飾實參 優點 可以簡化指標修改實參 includeusing namespace std 交換函式 1....

C 學習隨筆(二) 引用

參考資料 1 搜狗百科 2 3 1 c 引用 c reference 是對c語言的重要擴充,引用的表示方法與定義指標相似,用 代替了 2 引用的概念及定義 引用宣告的方法 型別識別符號 引用名 目標變數名 或 型別識別符號 引用名 目標變數名 兩者的區別於指標中的類似 例如 int a int b ...

C 學習筆記(1 引用)

c 對c語言有很多功能上擴充套件,大部分的擴充套件都是為了實現物件導向的機制 引用的概念 型別嗎 引用名 某變數 int n 4 int r n r引用了n,r的型別是 int 某個變數的引用,等價於這個變數,相當於這個變數的乙個別名,相當於兩個是一回事了 int n 7 int r n r引用了n...