【C/C++】關於函數調用傳遞實參


函數調用傳遞實參的兩種做法:

#include<bits/stdc++.h>
using namespace std;
typedef struct
{
    int *elem;//為存儲空間的基地址,故使用時需為其分配內存,如以下兩個函數中所示,若寫為elem[20]數組形式則不用。
    int len;
}node;
void aaa(node *L1)
{
    (*L1).elem=new int[20];
    for(int i=0;i<4;i++)
        cin>>(*L1).elem[i];
}
void bbb(node &L2)//&為引用類型,聲明L2是List2的引用,對L2操作修改也就是直接對List2修改
{
    L2.elem=new int[20];
    for(int i=0;i<4;i++)
        cin>>L2.elem[i];
}
int main()
{
    node List1,List2;

    /*函數傳遞實參做法1:地址傳遞*/
    aaa(&List1);//&為取地址符
    for(int i=0;i<4;i++)
        cout<<List1.elem[i]<<' ';
    cout<<endl;

    /*函數傳遞實參做法2:引用傳遞*/
    bbb(List2);
    for(int i=0;i<4;i++)
        cout<<List2.elem[i]<<' ';
    cout<<endl;
}

 補充:

int x=5;
int *y=&x; //用於指針傳遞,y有自己獨立的內存地址,存儲的內容是x的地址,*y是x的值,即*y等於5。
int &z=x; //用於引用傳遞,就是使z成為x的別名,修改其中任意一個另一個的值也會隨之改變。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM