函數調用傳遞實參的兩種做法:
#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的別名,修改其中任意一個另一個的值也會隨之改變。