c++裡面的值傳遞,指標傳遞,地址傳遞詳解
c++裡面的值傳遞:
//將i和j的值傳給a和b,實參傳給形參,但由於形參不會回傳給實參,故輸出i仍為38,j仍為45
void main(){
void swap(int, int);
int i = 38, j = 45;
swap(i,j) ;
cout << "i=" << i << endl;
cout << "j=" << j << endl;
system("pause");
}
void swap(int a, int b){
int temp;
temp = a;
a = b;
b = temp;
}
C++裡面的指標傳遞:
//這裡是將i和j的地址傳給形參,在函式中指標地址沒有改變,但地址指向的內容改變了。輸出時i為45,j位38.其實質仍為值傳遞
void main(){
void swap(int *, int *);
int i = 38, j = 45;
int *point_1, *point_2;
point_1 = &i, point_2 = &j;
swap(point_1,point_2); //實參為i和j的地址,也可寫成swap(&i,&j);
cout << "i=" << i << endl;
cout << "j=" << j << endl;
system("pause");
}
void swap(int *p1, int *p2){ //形參是指標變數
int temp;
temp = *p1;
*p1= *p2;
*p2= temp;
}
c++裡面的引用傳遞:
在此方法中,實參為整形變數,實參為應用,會自動把實參i和j的地址傳給形參a和b,這種方法屬於地址傳遞,輸出i為45,j為38.
void main(){
void swap(int &, int &);
int i = 38, j = 45;
swap(i,j); //實參為整形變數
cout << "i=" << i << endl;
cout << "j=" << j << endl;
system("pause");
}
void swap(int &a, int &b){ //形參為引用
int temp;
temp = a;
a= b;
b= temp;
}