1. 程式人生 > >c++裡面的值傳遞,指標傳遞,地址傳遞詳解

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;
}