2014-11-21 229 views
0
#import<iostream> 
using namespace std; 
int main() 
{ 
    //trying to test pointers & reference 
    int x = 5; 
    int y = 6; 
    int *p; 
    p = &y; 
    *p = 10; 
    int &r = x; 
    cout<<"X reference\n"<<&r<<"\n"<<"value:"<<r<<"\n"; 
    r=y; 
    cout<<"Y reference\n"<<&r<<"\n"<<"value:"<<r<<"\n"; 
} 

在這段代碼中,我首先將&r分配給x,然後我將r賦值給y。在C++中int和r = x和r = y有什麼區別?

  1. 分配& r = x和r = y之間的區別是什麼? 請幫助我。
+0

您不能重置參考。這是不同的。爲什麼在你的代碼中有'import'? – 2014-11-21 01:41:46

+0

嘗試在程序結束時打印出'x'和'y'。 – aschepler 2014-11-21 01:41:48

+0

r是x的別名。 '&r = x'將引用初始化爲x的別名。由於r現在是x的別名,所以'r = y'與'x = y'相同。 – Marcin 2014-11-21 01:42:24

回答

4

int &r = x;

定義參考到int變量。

引用不能改變他們引用他們的定義後,太行

r=y;

被分配x存儲在y值。它不會使r開始引用y。來自r的任何轉讓將被視爲來自x

另一種思考引用的方法就好像它們是一個指針變量,它在初始化後不能改變它所指向的內容,並且它們的使用情況都有一個隱含的解引用(*)運算符。

0

int& r = x聲明對x的引用,將其視爲別名。所以,如果你再往下行修改x,這將反映在r,例如,

x = 10; 
cout << r; // r is "updated" here, as it is a reference to `x` 

將打印10

在另一方面,聲明int r = x只是複製的x價值爲r,然後r是完全獨立的x。因此修改xr絕對沒有影響。

從某種意義上說,引用是指針類型的「kind-of」語法糖,儘管不是相同的,因爲您不能擁有未初始化的引用。

相關問題