c++

c++的引用

c++的引用

引用變量是c++中的一個特殊特性。它是一個別名,即分配給已經存在的變量的另一個名稱。在給變量賦值引用之後,可以使用變量名或引用名來引用該變量。它是用&操作符創建的。它的語法是

類型variablename;....Type &referencename = variablename;例如string welcomeStr = "Welcome to Jio";//歡迎字符串&alias2WelcomeStr = welcomeStr;//引用歡迎字符串

引用在c++中有4個主要目的。

  1. 您可以在函數調用中更改傳遞的參數。如果一個函數接收到一個變量的引用,它可以修改變量的值,並將其反映在父函數中。例如,參見下麵的代碼交換a和b的值。swap函數修改a和b,因為它們作為引用傳遞

    將以下代碼保存在一個文件中,例如swap.cpp。
#include使用命名空間std;Void swap (int& a, int& b) {int temp = a;A = b;B = temp;} int main() {int a, b;cout<<"Enter a: ";cin > >;cout<<"Enter b: ";cin > > b;cout < <”交換之前,答:“< < < < b和b:“< < < < endl; swap( a, b ); cout << "After swap, a: " << a << " and b: " << b<

現在編譯並運行代碼,通過調用swap()函數查看a和b的值的變化。

(基地)23:30:59:~ % g++ swap.cpp(基地)23:31:02:~ %。/。out輸入a: 10輸入b: 20交換前輸入a: 10、b: 20交換後輸入a: 20、b: 10

2.引用幫助我們避免複製大型結構:如果我們必須將一個大對象作為參數傳遞給一個函數,而該函數不會改變這個對象,那麼以任何方式傳遞它都會導致創建一個新的副本,這會浪費內存、存儲空間和cpu。通過使用參考資料,我們可以避免這種浪費。請參閱下麵的代碼片段

struct StudentRecord {int rollNumber;字符串名稱;字符串Homeaddress;字符串AadharNumber;…};//如果在下麵的函數中刪除&,則會創建一個新的// student對象副本。//我們使用const來避免函數中的意外更新//因為函數的目的是僅顯示s。void Display(const Student &s) {cout<<"Student record: "<

3.我們可以在循環中使用引用一次性修改所有元素。查看下麵的代碼片段,並將其複製到一個文件中,寫入referencloop .cpp

#include 使用命名空間std;Int main() {vector result{10.1, 20.2, 30.3, 40.4, 50.5};//如果使用reference for (float &x: result) x = x + 5.05,則可以一次性修改所有元素;//打印每個元素(float x: result) cout << x << " ";cout < < endl;返回0;}

現在編譯並執行它。向量的5個元素都改變了。

(base) 23:51:28:~ % g++ referencloop .cpp

(base) 23:55:06:~ % ./ a.t out

15.15 25.25 35.35 45.45 55.55

4.我們可以在每個循環中使用引用,以避免創建單個對象的副本。當對象很大時,這很方便。

大多數年輕程序員都搞不清引用和指針。引用和指針之間有3個主要區別。第一,我們有一個空指針,但是沒有空引用。引用必須始終與先前聲明的變量相關聯。其次,引用是使用一次對象,即一旦你將引用分配給一個對象,你就不能將它重新分配給另一個對象。另一方麵,指針可以在任何時間被更改為指向另一個對象。第三,引用必須在創建時初始化,而指針可以在任何時候初始化。

Baidu
map