2014-11-21 84 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”语法糖,尽管不是相同的,因为您不能拥有未初始化的引用。

相关问题