關于C++中引用的定義與使用詳解
先舉幾個栗子:“及時雨”宋江、“臥龍”諸葛亮、“齊天大圣”孫悟空、“怡紅公子”賈寶玉。
上面幾個例子都是引用,不是叫一個新人物“及時雨”、“臥龍”等等,而是給這些任務取了一個別名,本質(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;
}匯編代碼:

到此這篇關于關于C++中引用和指針的區(qū)別的文章就介紹到這了,更多相關C++引用和指針內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C++實現(xiàn)LeetCode(115.不同的子序列)
這篇文章主要介紹了C++實現(xiàn)LeetCode(115.不同的子序列),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07
C++類成員構造函數(shù)和析構函數(shù)順序示例詳細講解
這篇文章主要介紹了C++類成員構造和析構順序示例,看了這個例子大家就可以明白c++構造析構的奧秘2013-11-11
Qt數(shù)據(jù)庫應用之實現(xiàn)csv文件轉xls
這篇文章主要為大家詳細介紹了如何利用Qt實現(xiàn)csv文件轉xls功能,文中的示例代碼講解詳細,對我們學習或工作有一定參考價值,需要的可以了解一下2022-06-06

