C++ int &a,int a,int *a的比較
阿新 • • 發佈:2022-02-11
C++ int &a,int a,int *a的比較
int a 是定義一個新的變數(新開了一個的地址):
e.g.
void swap_value(int a){
cout << "函式中的a : " << &a << endl;
}
int main(){
int a = 1;
cout << "函式外的a : " << &a << endl;
swap_value(a);
return 0;
}
列印結果如下:
函式外的a : 0x7fff5c146888
函式中的a : 0x7fff5c14684c
int &a 定義的是a的引用:
這樣定義的變數的地址會與原變數的地址相同,就是一個地址同時指向了兩個變數。
e.g.
void swap_value(int &a){
cout << "函式中的a : " << &a << endl;
}
int main(){
int a = 1;
cout << "函式外的a : " << &a << endl;
swap_value(a);
return 0;
}
列印結果如下:
函式外的a : 0x7fff5c146888 函式中的a : 0x7fff5dc63888
int *a 定義的是一個指標變數(將原先的變數的地址賦值給它)
e.g.
void swap_value(int *a){
cout << "函式中的a : " << a << endl;
}
int main(){
int a = 1;
cout << "函式外的a : " << &a << endl;
swap_value(&a);
return 0;
}
列印結果如下:
函式外的a : 0x7fff5c146888 函式中的a : 0x7fff5c14684c
所以我們發現 int a 這樣定義會新開一個地址來存放這個變數,
但是 int *a 和 int &a 這樣定義是將原地址直接給這個變數,只不過一個儲存的是地址,一個儲存的是值。
未經允許,不得轉載。