關(guān)于C++中引用的定義與使用詳解
先舉幾個(gè)栗子:“及時(shí)雨”宋江、“臥龍”諸葛亮、“齊天大圣”孫悟空、“怡紅公子”賈寶玉。
上面幾個(gè)例子都是引用,不是叫一個(gè)新人物“及時(shí)雨”、“臥龍”等等,而是給這些任務(wù)取了一個(gè)別名,本質(zhì)上他們是一個(gè)人。
概念:引用是為已存在的變量取了一個(gè)別名,引用和引用的變量共用同一塊內(nèi)存空間
格式:類型& 引用變量名(對(duì)象名) = 引用實(shí)體; int& ra = a; ra為a的引用
特點(diǎn):
- 引用實(shí)體和引用類型必須為同種類型
- 引用在定義時(shí)必須初始化
- 一個(gè)實(shí)體可以有多個(gè)引用,但一個(gè)引用只能引用一個(gè)實(shí)體
void TestRef() { int a = 1; int& ra; // 該條語句編譯時(shí)會(huì)出錯(cuò),引用定義時(shí)必須初始化 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; // 該語句編譯時(shí)會(huì)出錯(cuò),a為常量 const int& ra = a; const int& rd = d; double d = 1.00; int& rd = d; // 該語句編譯時(shí)會(huì)出錯(cuò),類型不同 }
使用場景:做參數(shù)、做返回值
- 做參數(shù)
void Swap(int& left, int& right) { int temp = left; left = right; right = temp; }
- 做返回值
int& TestRefReturn(int& a) { a += 10; return a; }
原理:引用是按指針方式實(shí)現(xiàn)的,所以底層上有空間,如果一個(gè)函數(shù)返回時(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Visual Studio Code配置C/C++開發(fā)環(huán)境的教程圖解
這篇文章主要介紹了Visual Studio Code配置C/C++開發(fā)環(huán)境的教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06C++日期類的實(shí)現(xiàn)日期計(jì)算器舉例詳解
這篇文章主要給大家介紹了關(guān)于C++日期類實(shí)現(xiàn)日期計(jì)算器的相關(guān)資料,我們要考慮日期的增加和減少,自增和自減,以及兩個(gè)日期類的比較,以及當(dāng)前日期類的日期顯示和用戶的輸入輸出,需要的朋友可以參考下2024-05-05udp socket客戶端和udp服務(wù)端程序示例分享
這篇文章主要介紹了udp socket客戶端和udp服務(wù)端程序示例,需要的朋友可以參考下2014-03-03基于C語言實(shí)現(xiàn)圖書管理信息系統(tǒng)設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了基于C語言實(shí)現(xiàn)圖書管理信息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01C語言讀取寫入ini配置文件的方法實(shí)現(xiàn)
本文主要介紹了C語言讀取寫入ini配置文件的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10C++ OpenCV實(shí)戰(zhàn)之形狀識(shí)別
本案例通過使用OpenCV中的approxPolyDP進(jìn)行多邊形近似,進(jìn)而進(jìn)行基礎(chǔ)形狀識(shí)別(圓、三角形、矩形、星形…),快跟隨小編一起動(dòng)手嘗試一下2022-07-07