C++ 引用型別簡介
導讀 | 在C++ 中可以定義“引用”。定義方式如下: 型別名 &引用名 = 同型別的某變數名; 此種寫法就定義了一個某種型別的引用,並將其初始化為引用某個同型別的變數。 |
定義:引用:就是變數的一個別名。
注:作為別名來說,一個變數不能只有別名,而沒有自己的真實姓名。
基本資料型別的引用
如下面的一段程式碼:
例項
#includeusing namespace std; { int a = 3; int &b = a; //b就是a的引用,即b是a的一個別別名。 //引用必須初始化,否則編譯會報錯 b = 10; cout<< a << endl; //此時a 的值,已由原來的3變成了10.因為我們無論對別名做什麼操作,其實都是對變數的本身做操作。就像我們去交蘿蔔頭去幹什麼,羅XX本身就去幹什麼。 return 0; }
結構體型別的引用
如下面的一段程式碼:
例項
#includeusing namespace std; //定義一個名叫Coor的結構體,這是一個座標。 typedef struct { int x; int y; }Coor; int main(void) { Coor c1; //定義一個結構體變數,叫c1. Coor &c = c1; //給c1起了一個別名叫c. c.x = 10; //透過引用給結構體變數的資料成員賦值 c.y = 20; cout<< c1.x << c2.y; //輸出的結果:10 20 return 0; }
指標型別的引用
指標型別的引用是引用當中最為複雜,最難理解的一部分,同時在寫法形式上也有著與眾不同的地方。
定義:
型別 *&指標引用名 = 指標;
看個例子:
例項
#includeusing namespace std; int main(void) { int a = 10; //定義一個整型的a變數,a的值為10。 int *p = &a; //定義一個指向a變數的指標 int *&q = p; //定義一個指標的引用,即q為p的別名。 定義方法:型別 *&指標引用名 = 指標; *q = 20; //把20賦給*q,相當於是把20賦值給*p,也就相當於把20賦值給a. cout<< a << endl; //輸出a 的值為20. return 0; }
引用作函式引數
在沒有學習引用之前我們學習 C 語言時,學過這樣的經典程式:
//將兩個值進行交換 void fun( int *a,int *b) //形參為兩個整型的指標變數 { int temp = 0; //定義一個臨時變數。良好的習慣是定義一個變數並初始化它; c = *a; //將*a賦值給c; *a = *b; //將*b賦值給*a; *b = c; //再將c賦值給*b;這樣就完成了a、b數值的交換 } int x = 10,y = 20; fun(&x,&y); //在主函式中呼叫時,傳過去的實參需要寫成 取地址a,取地址b,比較麻煩,也不易理解。
現在我們學習了引用,在完成同等功能時需要寫成什麼樣子?
例項
void fun (int &a, int &b) //形參為兩個整型的引用 { int temp = 0; temp = a; a = b; b = temp; } int x = 10,y = 20; fun(x,y); //在主函式中呼叫時,實參傳過去後a是x的別名,b是y的別名。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2770798/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C++引用型別詳解C++型別
- Visual C++ 6.0專案檔案型別簡介C++型別
- service型別及功能簡介+pod型別型別
- C++ 列舉型別介紹C++型別
- JavaScript引用型別-Object型別JavaScript型別Object
- 值型別和引用型別型別
- js引用型別JS型別
- javascript:引用型別JavaScript型別
- clickhouse資料型別簡介資料型別
- JavaScript值型別和引用型別JavaScript型別
- ECMAScript 原始型別與引用型別型別
- c#:值型別&引用型別C#型別
- js基本型別和引用型別區別JS型別
- 值型別與引用型別的區別型別
- JavaScript - 基本型別與引用型別值JavaScript型別
- Java的基本型別和引用型別Java型別
- Go 的引用型別Go型別
- Golang 引用型別-mapGolang型別
- 引用型別之Object型別Object
- JS篇-基本型別和引用型別、typeofJS型別
- C++中的基本變數型別介紹C++變數型別
- c#中值型別和引用型別的區別C#型別
- C++類內成員變數可以定義引用型別嗎C++變數型別
- 簡單資料型別和引用資料型別對應棧和堆示意圖資料型別
- Java引用型別原理剖析Java型別
- Java引用型別與WeakHashMapJava型別HashMap
- 區別值型別資料和引用型別資料型別
- Java引用型別解析:掌握強引用、軟引用、弱引用和幻象引用的妙用Java型別
- 基本資料型別與API引用型別的使用資料型別API
- 簡單理解js閉包、型別引用....第一章JS型別
- 引用型別的深拷貝型別
- C++純虛擬函式簡介及區別C++函式
- 從賦值看基本型別和引用型別的區別賦值型別
- c++中指標和引用的區別?C++指標
- C++ const void * 型別轉換簡單測試C++型別
- js資料型別之基本資料型別和引用資料型別JS資料型別
- JAVA中基本資料型別和引用資料型別Java資料型別
- C#程式設計引用型別和值型別 以及引用傳遞和值傳遞C#程式設計型別