[C++] called by value和called by reference

Posted on Wed, Oct 13, 2021 C++

傳址參考(called by reference)

#include <bits/stdc++.h>

using namespace std;

int print(vector<int> &v){
    for(int i=0;i<v.size();i++) cout<<v[i]<<" ";
    v[0]=0;
}


int main()
{
    vector<int> v={4, 5, 8, 3, 7, 1, 2, 6, 10, 9};
    print(v);
    cout<<endl;
    for(int i=0;i<v.size();i++) cout<<v[i]<<" ";
    return 0;
}

輸出:

4 5 8 3 7 1 2 6 10 9
0 5 8 3 7 1 2 6 10 9

傳值參考

#include <bits/stdc++.h>

using namespace std;

int print(vector<int> v){
    for(int i=0;i<v.size();i++) cout<<v[i]<<" ";
    v[0]=0;
}


int main()
{
    vector<int> v={4, 5, 8, 3, 7, 1, 2, 6, 10, 9};
    print(v);
    cout<<endl;
    for(int i=0;i<v.size();i++) cout<<v[i]<<" ";
    return 0;
}

輸出:

4 5 8 3 7 1 2 6 10 9
4 5 8 3 7 1 2 6 10 9

結論:

傳值參考會複製一份變數,速度較慢,不會影響原變數