1. 程式人生 > 其它 >C++ int &a,int a,int *a的比較

C++ int &a,int a,int *a的比較

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 這樣定義是將原地址直接給這個變數,只不過一個儲存的是地址,一個儲存的是值。

未經允許,不得轉載。