#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。
答案 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
。因此,修改x
对r
绝对没有影响。
从某种意义上说,引用是用于指针的“种类”语法糖,虽然不是真的相同,因为你没有未初始化的引用。