引用調用,C++---引用

 2023-10-15 阅读 20 评论 0

摘要:概念 引用就是一個已存在變量的別名,編譯器并不會為其分配空間,其與變量共用同一份地址空間。 void Test {int a = 10;int &pa = a; //引用的初始化printf("a: %p pa: %p\n",&a,&pa); //打印兩個變量的地址 } 引用的特性 在定義的時

概念

引用就是一個已存在變量的別名,編譯器并不會為其分配空間,其與變量共用同一份地址空間。

void Test
{int a = 10;int &pa = a; //引用的初始化printf("a: %p pa: %p\n",&a,&pa); //打印兩個變量的地址
}

引用的特性

  • 在定義的時候必須初始化
    例如:當你給別人起綽號(別名)的時候,你肯定要知道他原名叫啥。
  • 一個變量可以有多個引用
    例如:一個人可以有多個綽號一樣。
  • 一個引用一旦引用一個實體后,就不能在引用其他實體。
    例如:A同學的綽號叫XXX,那么B同學的綽號就不能再叫XXX了。

常引用

什么是常引用呢?
我們知道在C++中有個關鍵字叫const,使用const修飾的引用我們稱其為常引用。

const講解

那么常引用有啥特點呢?

  • 不能通過常引用來修改其引用的值。
    例:只要const修飾的引用就不能改變其變量的值。
  • 常引用可以指向普通引用。
    int & a=b; const int & c=a;//可以的
  • 普通引用不能指向常引用。
    const int & a=b; int c=b;//編譯錯誤

那我們什么時候使用常引用呢?

  • 通常情況下,我們不想在函數中改變參數的值,時我們通常會使用參數傳值,但是參數傳值效率太低,這時我們會使用引用傳值。
  • 如果既要利用引用提高程序的效率,又要保護傳遞給函數的數據不在函數中被改變,就應使用常引用。

引用的使用場景

  • 做參數
  • 做返回值

引用調用?注意:在使用引用作為返回值時,我們一定判斷是否該引用在函數返回后會釋放。
可能這樣說不夠準確,舉一個栗子。

int& Func()
{int a = 10;int &pa = a;return pa;
}

上面代碼中的&pa是在棧區創建的,所以在函數退出的同時,會釋放其資源,所以我們在使用引用作為返回值時,一定要保證引用的作用范圍不受函數限制。

指針與引用的區別

  • 引用是一個別名沒有實際空間,但指針實際上是有一個實際空間。
  • 引用定義時必須進行初始化,指針在定義時可以先不進行初始化。
  • 沒有NULL引用,有NULL指針。
  • 有多級指針,沒有多級引用。
  • 引用在實例化一個實體后就不能再引用其他實體,但是指針指向一個變量后,可以重新指向另一個變量。
  • 使用sizeof()函數不同,sizeof(引用)返回的是實體的大小,sizeof(指針)返回的是指針空間的大小。
  • 引用比指針使用安全。
  • 引用+1,表示實體值大小+1,指針+1,表示指針向后偏移一個類型的大小。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/140490.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息