C ++中int& r = x和r = y有什么区别?

时间:2014-11-21 01:36:44

标签: c++ reference

#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";
}

在这段代码中,我首先将&amp; r分配给x,然后将r分配给y。

  1. 分配和分配有什么区别? r = x和r = y? 请帮助我。

2 个答案:

答案 0 :(得分:4)

int &r = x;

定义对int变量的引用。

引用无法在定义后更改引用的内容,因此行

r=y;

正在为x分配y中存储的值。它不会使r开始引用y。来自r的任何作业都将被视为来自x

考虑引用的另一种方式就好像它们是一个指针变量,在初始化之后你不能改变它所指向的内容,并且它们的任何使用都有一个隐式的解除引用(*)运算符。 p>

答案 1 :(得分: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绝对没有影响。

从某种意义上说,引用是用于指针的“种类”语法糖,虽然不是真的相同,因为你没有未初始化的引用。