亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++引用的定義與使用實例分析

發布時間:2022-07-08 10:15:53 來源:億速云 閱讀:177 作者:iii 欄目:開發技術

這篇文章主要介紹了C++引用的定義與使用實例分析的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇C++引用的定義與使用實例分析文章都會有所收獲,下面我們一起來看看吧。

解釋引用

首先我們先來看一個引用的例子

int main()
{
	int a = 10;
	int& Bin = a;
	cout << a << endl;
	cout << Bin << endl;
	cout << &a << endl;
	cout << &Bin << endl;
}

C++引用的定義與使用實例分析

對于一個int型函數a,我們對a進行了引用,引用的新int函數叫Bin。

由他們是同一個地址可以知道,引用其實就是對同一個地址的函數,換了一個新的叫法。

相當于《水滸傳》中,李逵在江湖上人稱黑旋風

那么這里int a就相當于李逵,而int&Bin就相當于黑旋風。

你使用李逵和黑旋風,他都會答應,這也就相當于起外號

如下:

int main()
{
	int a = 10;
	int& Bin = a;
	Bin += 10;
	cout << a << endl;
	cout << Bin << endl;
	cout << &a << endl;
	cout << &Bin << endl;
}

C++引用的定義與使用實例分析

可以看到我們這里是對Bin進行操作,但是a的值也改變了。

同時我們也可以多個引用,可以給引用再引用(給外號再起外號)

int main()
{
	int a = 10;
	int& Bin = a;
	int& Tian = a;
	int& Wei = Bin;
	cout << a << endl;
	cout << Bin << endl;
	cout << Tian << endl;
	cout << Wei << endl;
	cout << &a << endl;
	cout << &Bin << endl;
	cout << &Tian << endl;
	cout << &Wei << endl;
}

C++引用的定義與使用實例分析

可以看到值和地址還是相同。

注意:引用必須同等類型

int a=10;
double&b=a;
這是錯誤的

引用的作用

非常經典的引用就是交換兩個數的值。

這是我們c語言的交換,這里形參不改變實參

void test1(int a,int b)//a,b不改變,因為a,b的生命周期只在swap函數內,結束swap后a,b就消失,不改變實參
{
	int tmp = a;
	a = b;
	b = tmp;
}
int main()
{
	int a = 1;
	int b = 2;
	test1(a, b);
	cout << a << " " << b << endl;
}

然后我們學習了指針后,知道能直接交換地址

void test2(int* a, int *b)//使用指針,交換地址實現數字變換
{
	int tmp = *a;
	*a = *b;
	*b = tmp;
}
int main()
{
	int a = 1;
	int b = 2;
	test2(&a,&b);
	cout << a << " " << b << endl;
}

然后這是引用,引用是實參的外號,我們這里修改,是對實參的直接修改

void test3(int& a, int& b)//使用引用,a,b是實參的別名,相當于對實參的調用
{
	int tmp = a;
	a = b;
	b = tmp;
}
int main()
{
	int a = 1;
	int b = 2;
	test3(a, b);
	cout << a << " " << b << endl;
}

注意:我們這里的引用都必須是合法的空間

Int &a = 10;//10并不是一個空間,只是一個數,這是錯誤的引用

關于局部變量的引用

int& test2()
{
	int b = 10;
	return b;
}
void test1()
{
	int &a = test2();
	cout <<  a << endl;
}
int main()
{
	test1();
}

按照常理,這里test2中的b出了test2應該作為局部變量被回收,但是

C++引用的定義與使用實例分析

我們依然能得到正確答案,這是因為編譯器有對這種情況進行優化,但是僅限一次

如果我們這樣

int& test2()
{
	int b = 10;
	return b;
}
void test1()
{
	int& a = test2();
	cout << a << endl;
	cout << a << endl;
	cout << a << endl;
	cout << a << endl;
}
int main()
{
	test1();
}

多調用幾次打印

C++引用的定義與使用實例分析

就會發現除了第一次是正常的,其余都是亂碼。

注:如果實在是要這樣搞,就加上靜態變量Static。

int& test2()
{
	static int b = 10;
	return b;
}
void test1()
{
	int& a = test2();
	cout << a << endl;
	cout << a << endl;
	cout << a << endl;
	cout << a << endl;
}
int main()
{
	test1();
}

C++引用的定義與使用實例分析

關于“C++引用的定義與使用實例分析”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“C++引用的定義與使用實例分析”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

营山县| 深水埗区| 射阳县| 山阴县| 隆子县| 昌黎县| 五台县| 永春县| 高青县| 黄山市| 岢岚县| 惠东县| 卢氏县| 奉新县| 韶关市| 扶绥县| 秭归县| 开阳县| 荣成市| 扎兰屯市| 临西县| 清远市| 洱源县| 亚东县| 东平县| 墨玉县| 深圳市| 丹凤县| 进贤县| 安丘市| 娱乐| 久治县| 永定县| 宝兴县| 弥勒县| 台东市| 乐都县| 武川县| 博兴县| 静乐县| 云安县|