欧美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; // 該條語(yǔ)句編譯時(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; // 該語(yǔ)句編譯時(shí)會(huì)出錯(cuò),a為常量
    const int& ra = a;
    const int& rd = d;
    double d = 1.00;
    int& rd = d; // 該語(yǔ)句編譯時(shí)會(huì)出錯(cuò),類型不同
}

使用場(chǎng)景:做參數(shù)、做返回值

  • 做參數(shù)
void Swap(int& left, int& right)
{
    int temp = left;
    left = right;
    right = temp;
}
  • 做返回值
int& TestRefReturn(int& a)
{
    a += 10;
    return a;
}

原理:引用是按指針?lè)绞綄?shí)現(xiàn)的,所以底層上有空間,如果一個(gè)函數(shù)返回時(shí),離開(kāi)函數(shù)作用域后,其棧上空間已經(jīng)還給系統(tǒng),因此不能用棧上的空間作為引用類型返回,引用必類型返回值的生命周期必須比函數(shù)的生命周期長(zhǎng)

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)文章

最新評(píng)論