C++探索指標,雙重指標,引用
阿新 • • 發佈:2019-02-19
當我們的函式的引數有指標時:
void change(int *_a,int &b){_a=&b;
}
void main(){
int a=10,b=20;
int *p_a=&a;
change(p_a,b);
printf("%d",*p_a);
}
輸出為:10
比如這樣:
void change(int *_a,int &b){
*_a=b;
}
void main(){
int a=10,b=20;
int *p_a=&a;
change(p_a,b);
printf("%d",*p_a);
}
這樣輸出就變成了20,因為是對_a和p_a共同指向的地址所存放的資料進行操作。
但有時候我們需要的是把p_a的指向改變,讓p_a=&b,而不僅僅是對p_a所指向的地址所存放的資料進行改變。這時候我們就需要用到雙重指標,顧名思義,即指向指標的指標,就是指向一個指標的地址,這樣就可以把一個指標的地址傳遞進去,從而直接對那個指標進行操作,比如:
void change(int **_a,int &b){
*_a=&b;
}
void main(){
int a=10,b=20;
int *p_a=&a;
change(&p_a,b);
printf("%d",*p_a);
}
這裡面隱含操作就是 int** _a=&p_a;這樣*_a就是p_a了,所以輸出為20
引用就是給一個變數取一個別名,比如
int a=10;
int& ra=a;
ra=20;
printf("%d",a);
這樣輸出就是20,因為ra就是a,對ra進行操作就是對a進行操作,所以我們經常這樣對實參進行操作
就像這樣
void change(int& a){
a=20;
}
void main(){
int a=10;
change(a);
printf("%d",a);
}