C++ | 函數傳入引用參數

一. 函數傳入引用參數

引用的作用是爲一個變量起一個別名。

01 建立一個引用

#include <iostream>
using std::cin;
using std::cout;
using std::endl;


int main(){
    int a = 5;
    int &b = a;
    cout<<a<<endl;
    cout<<b<<endl;
    cout<<&a<<endl;
    cout<<&b<<endl;
}

  • 經過聲明後b是a別名,b與a代表的是同一個變量,佔內存中同一個存儲單元,具有同一地址。
代碼輸出

在這裏插入圖片描述
⚠️注意&符號作爲取地址符與作爲引用聲明符的區別。

  • 只有在數據類型後&纔是引用聲明符

02 使用引用的一些注意事項:

  1. 聲明一個引用時,必須同時使之初始化,及聲明它代表哪一個變量。
  2. 有一個例外,引用作爲函數參數時,不需要初始化。
  3. 在聲明一個引用後,不能再使之作爲另一變量的引用。
  4. 不能建立引用數組。

03 引用的作用

引用最重要的意義在於作爲函數的參數,以擴充函數傳遞參數的能力。

04 調用函數時,傳參的三種形式:

1. 變量名作爲實參和形參 —— “值傳遞”
  • 這種方式傳給形參的是變量的值,傳遞是單向的。
  • 如果在執行函數器件形參的值變了,不會回傳給實參。
2. 傳遞變量的地址 —— “值傳遞”
  • 該方式形參是指針變量,實參是一個變量的地址。
  • 調用函數時,形參得到的實參變量的地址,因此指向實參的變量單元。
#include <iostream>

using std::cin;
using std::cout;
using std::endl;

int main() {
    void swap(int * , int * );
    int i = 3, j = 5;
    swap( &i, &j);
    cout << "i=" << i << endl << "j=" << j << endl;
    return 0;
}

void swap(int * a, int * b) {
    int temp;
    temp = *a;
    *a = *b;
    *b = temp;
}
// 輸出
// i=5
// j=3
  • 運行結果實現了i和j的交換。
3. 引用作爲函數參數 —— “變量傳遞”
#include <iostream>

using std::cin;
using std::cout;
using std::endl;

int main()
{
      void swap(int & ,int&);
      int i = 3,j = 5;
      swap(i,j);
      cout << "i=" << i << endl << "j=" << j << endl;
      return 0;
}
 
void swap(int &a,int &b)
{
    int temp;
    temp = a;
    a = b;
    b= temp;
}

// 輸出
// i=5
// j=3
  • 形參是聲明的引用,注意這個引用並沒有初始化,這就是上面提到的特例。
  • 函數調用時實現了引用的初始化,這時傳入的實參就是變量,而不是數值,所以做到了真正意義上的“變量傳遞”。
發佈了154 篇原創文章 · 獲贊 28 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章