為了說明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...