欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于C++中引用的定義與使用詳解

 更新時(shí)間:2023年07月15日 10:22:12   作者:Pin_na  
這篇文章主要介紹了關(guān)于C++中引用和指針的區(qū)別,概念:引用是為已存在的變量取了一個(gè)別名,引用和引用的變量共用同一塊內(nèi)存空間,需要的朋友可以參考下

先舉幾個(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)境的教程圖解

    這篇文章主要介紹了Visual Studio Code配置C/C++開發(fā)環(huán)境的教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • C++日期類的實(shí)現(xiàn)日期計(jì)算器舉例詳解

    C++日期類的實(shí)現(xiàn)日期計(jì)算器舉例詳解

    這篇文章主要給大家介紹了關(guān)于C++日期類實(shí)現(xiàn)日期計(jì)算器的相關(guān)資料,我們要考慮日期的增加和減少,自增和自減,以及兩個(gè)日期類的比較,以及當(dāng)前日期類的日期顯示和用戶的輸入輸出,需要的朋友可以參考下
    2024-05-05
  • udp socket客戶端和udp服務(wù)端程序示例分享

    udp socket客戶端和udp服務(wù)端程序示例分享

    這篇文章主要介紹了udp socket客戶端和udp服務(wù)端程序示例,需要的朋友可以參考下
    2014-03-03
  • C++代碼實(shí)現(xiàn)雙向鏈表

    C++代碼實(shí)現(xiàn)雙向鏈表

    這篇文章主要為大家詳細(xì)介紹了C++代碼實(shí)現(xiàn)雙向鏈表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 基于C語言實(shí)現(xiàn)圖書管理信息系統(tǒng)設(shè)計(jì)

    基于C語言實(shí)現(xiàn)圖書管理信息系統(tǒng)設(shè)計(jì)

    這篇文章主要為大家詳細(xì)介紹了基于C語言實(shí)現(xiàn)圖書管理信息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C語言讀取寫入ini配置文件的方法實(shí)現(xiàn)

    C語言讀取寫入ini配置文件的方法實(shí)現(xiàn)

    本文主要介紹了C語言讀取寫入ini配置文件的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C++ OpenCV實(shí)戰(zhàn)之形狀識(shí)別

    C++ OpenCV實(shí)戰(zhàn)之形狀識(shí)別

    本案例通過使用OpenCV中的approxPolyDP進(jìn)行多邊形近似,進(jìn)而進(jìn)行基礎(chǔ)形狀識(shí)別(圓、三角形、矩形、星形…),快跟隨小編一起動(dòng)手嘗試一下
    2022-07-07
  • Qt實(shí)現(xiàn)文本編輯器(二)

    Qt實(shí)現(xiàn)文本編輯器(二)

    這篇文章主要介紹了利用Qt實(shí)現(xiàn)的一個(gè)文本編輯器。本文將具體講解下是如何實(shí)現(xiàn)菜單欄以及工具欄上對(duì)應(yīng)的需求,感興趣的可以動(dòng)手試一試
    2022-01-01
  • C++開源庫nlohmann/json的介紹和使用詳解

    C++開源庫nlohmann/json的介紹和使用詳解

    nlohmann/json?是一個(gè)C++實(shí)現(xiàn)的JSON解析器,使用非常方便直觀,這篇文章主要為大家詳細(xì)介紹了nlohmann/json的簡介和使用,需要的可以參考下
    2023-12-12
  • C語言實(shí)現(xiàn)航班管理系統(tǒng)

    C語言實(shí)現(xiàn)航班管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)航班管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12

最新評(píng)論