119 C++中的引用&

phpstory發表於2018-08-20

引用 1. 引用的概念    

建立引用的作用是為變數另起一個名字,變數的引用通常被認為是變數的別名。    

宣告一個引用的格式如下:      

型別 & 引用名 = 已定義的變數名;  

例如:    

int i=5;    

int &j = i;  

 這裡,宣告瞭一個整數型別的引用j ,用整型變數i對它進行初始化,這時j就可看做是變數i的引用,即是變數i的別名。也就是說,變數i和引用j佔用記憶體的同一位置。當i變化時,j也隨之變化,反之亦然。

舉例:

變數和引用的關係:

#include<iostream>
using namespace std;
int main()
{
	int i;
	int &j = i;
	 
	i = 30;
	cout << "i=" << i << "j=" << j << "\n";
	j = 80;
	cout << "i=" << i << "j=" << j << "\n";
	cout << "i的地址:" << &i << "\n";
	cout << "j的地址:" << &j << "\n";
	return 0;
}
執行結果:
i=30j=30
i=80j=80
i的地址:009CFD40 //地址會有所不同
j的地址:009CFD40
請按任意鍵繼續. . .

說明:    

(1) 對變數宣告一個引用,編譯系統不給它單獨分配儲存單元,i和j都代表同一變數單元。    

(2)在宣告一個引用時,必須立即對它進行初始化,即宣告它代表哪一個變數。不能宣告完成後再賦值。

(3) 為引用提供的初始值,可以是一個變數或另一個引用。

例如:  

     int i=5;      //定義整型變數i  

     int &j1=i;    //宣告j1是整型變數i的引用(別名)  

    int &j2=j1;   //宣告j2是整型引用j1的引用(別名) 這樣定義後,變數i有兩個別名:j1和j2。  

 (4) 指標是通過地址間接訪問某個變數,需要書寫間接運算子“*”;    

引用是通過別名直接訪問某個變數。    

每次使用引用時,可以不用書寫間接運算子“*”,因而使用引用可以簡化程式。

(5) 引用在初始化後不能再被重新宣告為另一個變數的引用(別名)。

例如:    

int i,k;     //定義i和k是整型變數    

int &j=i;    //宣告j是整型變數i的引用(別名)    

j=&k         //錯誤,企圖重新宣告j是整型變數k的引用(別名)

(6) 儘管引用運算子“&”與地址操作符“&”使用相同的符號,但是它們是不一樣的。    

引用運算子“&”僅在宣告引用時使用。    

其他場合使用的“&”都是地址操作符

例如:  

int j=5;  

int& i=j;   //宣告引用i,“&”為引用運算子  

i=123;      //使用引用i,不帶引用運算子  

int *pi=&i; // 在此,“&”為地址操作符  

cout<<&pi;  // 在此,“&”為地址操作符

更多內容歡迎關注:phpstory

 

相關文章