溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C++的引用如何應(yīng)用

發(fā)布時(shí)間:2021-11-29 15:39:34 來(lái)源:億速云 閱讀:148 作者:iii 欄目:編程語(yǔ)言

這篇文章主要講解了“C++的引用如何應(yīng)用”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“C++的引用如何應(yīng)用”吧!

C++中,引用就是一個(gè)變量的別名,它需要用另一個(gè)變量或?qū)ο髞?lái)初始化自身。引用就像一個(gè)人的外號(hào)一樣,例如:有一個(gè)人,他的名字叫做張旭,因他在家排行老三,別人給他取了一個(gè)外號(hào)叫張三,這樣,我們叫張三或張旭,指的都是同一個(gè)人。下面的代碼聲明了一個(gè)引用b,并用變量a進(jìn)行了初始化。

int a = 5;  int &b = a; //用&表示申明一個(gè)引用。引用必須在申明時(shí)進(jìn)行初始化

考慮下面代碼:

int a = 5;  int &b = a;  int c=3; //此處并不是將b變成c的引用,而是給b賦值,此時(shí),b和a的值都變成了3

引用和用來(lái)初始化引用的變量指向的是同一塊內(nèi)存,因此通過(guò)引用或者變量可以改變同一塊內(nèi)存中的內(nèi)容。引用一旦初始化,它就代表了一塊特定的內(nèi)存,再也不能代表其他的內(nèi)存。

那么引用和指針變量有什么區(qū)別呢?

引用只是一個(gè)別名,是一個(gè)變量或?qū)ο蟮奶鎿Q名稱。引用的地址沒(méi)有任何意義,因此C++沒(méi)有提供訪問(wèn)引用本身地址的方法。引用的地址就是它所引用的變量或者對(duì)象的地址,對(duì)引用的地址所做的操作就是對(duì)被引用的變量或?qū)ο蟮牡刂匪龅牟僮?。指針是地址,指針變量要存?chǔ)地址值,因此要占用存儲(chǔ)空間,我們可以隨時(shí)修改指針變量所保存的地址值,從而指向其他的內(nèi)存。

引用和指針變量的內(nèi)存模型如下圖所示:

C++的引用如何應(yīng)用

在編寫程序時(shí),很少直接使用引用,即用一個(gè)變量來(lái)初始化一個(gè)引用(int a; int &b=a),如果這么做,通過(guò)變量和引用都可以修改同一塊內(nèi)存的內(nèi)容,在程序中,就很容易出現(xiàn)問(wèn)題,不知道此時(shí)內(nèi)存中的值到底是多少了。

引用多數(shù)用在函數(shù)的形參定義上,在調(diào)用函數(shù)傳參時(shí),我們經(jīng)常使用指針傳遞,一是避免在實(shí)參占較大內(nèi)存時(shí)發(fā)生值的復(fù)制,二是完成一些特殊的作用,例如,要在函數(shù)中修改實(shí)參所指向內(nèi)存中的內(nèi)容。同樣,使用引用作為函數(shù)的形參也能完成指針的功能,在有些情況下還能達(dá)到比使用指針更好的效果。

下面,我們以一段程序的講解作為引用這一小節(jié)的結(jié)束。

例:

#include <iostream.h>  //change函數(shù)主要用來(lái)交換a和b的值  void change(int& a,int& b);  void main()  {  int x=5;  int y=3;  cout<<"original x="<<x<<endl;  cout<<"original y="<<y<<endl;  change(x,y);   //此處如果用指針傳遞,則調(diào)用change(&x, &y),這樣很容易讓人迷惑,不知道交換的是x和y的值,還是x和y的地址?此處用引用,可讀性就比指針要好  cout<<"changed x="<<x<<endl;  cout<<"changed y="<<y<<endl;  }  /*在change()函數(shù)的實(shí)現(xiàn)中,我們采用了一個(gè)小算法,完成了a和b值的交換,讀者下來(lái)可以仔細(xì)研讀,細(xì)細(xì)體味一下(讀者還可以采用其他的方法,當(dāng)然也可以直接使用通常的實(shí)現(xiàn),定義一個(gè)臨時(shí)變量,完成a和b值的交換)*/ void change(int& a,int& b)  {  a=a+b;  b=a-b;  a=a-b;  }

感謝各位的閱讀,以上就是“C++的引用如何應(yīng)用”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)C++的引用如何應(yīng)用這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI