關(guān)于C++中引用的定義與使用詳解
先舉幾個栗子:“及時雨”宋江、“臥龍”諸葛亮、“齊天大圣”孫悟空、“怡紅公子”賈寶玉。
上面幾個例子都是引用,不是叫一個新人物“及時雨”、“臥龍”等等,而是給這些任務(wù)取了一個別名,本質(zhì)上他們是一個人。
概念:引用是為已存在的變量取了一個別名,引用和引用的變量共用同一塊內(nèi)存空間
格式:類型& 引用變量名(對象名) = 引用實體; int& ra = a; ra為a的引用
特點:
- 引用實體和引用類型必須為同種類型
- 引用在定義時必須初始化
- 一個實體可以有多個引用,但一個引用只能引用一個實體
void TestRef() { int a = 1; int& ra; // 該條語句編譯時會出錯,引用定義時必須初始化 int& ra = a; int& rra = a; printf("%p %p %p\n", &a, &ra, &rra); }
常引用:const類型必須使用常引用 const int& ra = a;
void TestConstRef() { const int a = 1; int& ra = a; // 該語句編譯時會出錯,a為常量 const int& ra = a; const int& rd = d; double d = 1.00; int& rd = d; // 該語句編譯時會出錯,類型不同 }
使用場景:做參數(shù)、做返回值
- 做參數(shù)
void Swap(int& left, int& right) { int temp = left; left = right; right = temp; }
- 做返回值
int& TestRefReturn(int& a) { a += 10; return a; }
原理:引用是按指針方式實現(xiàn)的,所以底層上有空間,如果一個函數(shù)返回時,離開函數(shù)作用域后,其棧上空間已經(jīng)還給系統(tǒng),因此不能用棧上的空間作為引用類型返回,引用必類型返回值的生命周期必須比函數(shù)的生命周期長
int main() { int a = 10; int& ra = a; ra = 20; int* pa = &a; *pa = 20; return 0; }
匯編代碼:
到此這篇關(guān)于關(guān)于C++中引用和指針的區(qū)別的文章就介紹到這了,更多相關(guān)C++引用和指針內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Visual Studio Code配置C/C++開發(fā)環(huán)境的教程圖解
這篇文章主要介紹了Visual Studio Code配置C/C++開發(fā)環(huán)境的教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06udp socket客戶端和udp服務(wù)端程序示例分享
這篇文章主要介紹了udp socket客戶端和udp服務(wù)端程序示例,需要的朋友可以參考下2014-03-03基于C語言實現(xiàn)圖書管理信息系統(tǒng)設(shè)計
這篇文章主要為大家詳細介紹了基于C語言實現(xiàn)圖書管理信息系統(tǒng)設(shè)計與實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01