2016-02-09 57 views
-1

我想了解C++引用變量。此鏈接似乎表示可以重新分配指針,而應在初始化時分配引用。 difference between pointer and reference。我有下面的代碼。我已經在debian系統上運行了它。輸出結果如下所示。輸出似乎表明,參考也可以重新分配。如果有人能夠澄清,那將是非常好的。重新分配C++引用變量

#include <iostream> 
using namespace std; 

int main() 
{ 
    int x = 5; 
    int y = 6; 
    int *p; 

    p = &x; 
    cout << "content of p " << *p << endl; 

    p = &y; 
    cout << "content of p " << *p << endl; 

    *p = 10; 
    cout << "content of p " << *p << endl; 

    /*A reference must be assigned at initialization*/ 
    int &r = x; 
    cout << "content of r " << r << endl; 

    r = y; 
    cout << "content of r " << r << endl; 


    return 0; 
} 

輸出

content of p 5 
content of p 6 
content of p 10 
content of r 5 
content of r 10 
+1

引用不能被重新分配。如果你認爲它可以,那麼你的測試不夠徹底。 – juanchopanza

+2

這裏'r = y;'與'x = y;'的作用相同。它不分配參考,它分配參考所指的東西。 – immibis

+0

引用不能被重新分配意味着'&r'永遠不會改變。 'r'可以在引用非const的情況下改變。 – LogicStuff

回答

3

你在這裏看到是被分配到由參考變量引用變量的值。

換句話說:
您沒有爲指定變量賦予新值。您爲分配了一個新值,該參數爲變量。