網頁

2022/8/8

C++ 函式參數傳值、傳參照 function parameters pass by value, pass by reference

C++的函式參數可傳值(pass by value)或傳參照(pass by reference)。


Pass by value的參數值是傳入的引數(arguments)值的複製;pass by reference的參數值則是傳入的引數本身。在參數名稱前加上ampersand符號&即為傳參照參數。

例如下面的Add_passByRef(int &i)的參數&i即為傳參照,所以遞增時改動的i為外部傳入的引數a本身;而Add_passByValue(int i)的參數i為傳值,遞增時改動的i為複製於引數a的值。

main.cpp

#include <iostream>
using namespace std;

void Add_passByRef(int &i) { i++; }

void Add_passByValue(int i) { i++; }

int main() {
    int a = 1;
    Add_passByRef(a);
    cout << a << endl; // 2

    Add_passByValue(a);
    cout << a << endl; // 2
    return 0;
}

由於pass by reference是傳入引數本身因此效率比複製引數的pass by value好。通常引數內容較大時(例如有許多成員的類別物件)會以pass by reference方式傳入。


沒有留言:

張貼留言