#include <iostream>
using namespace std;
int main()
{
int i=9,k=8;
int &q=i;
q=k;
cout<<i<<"\n"<<q<<"\n";
return 0;
}
输出:
8
8
但在我的书中给出“q = k仅改变i的值而不改变q。这是因为作为参考的q被自动解除引用为(* q)。因此存储在地址中的值q被i的值替换 但正如你所看到的,q的价值也会发生变化。是不是错了???
答案 0 :(得分:2)
q
不会改变。换句话说,它永远和永远地引用i
,始终(直到它超出范围)。您无法使q
引用其他对象。这就是“它的价值[原文如此?]从未改变的意思”。 q
的“值”是i
的地址。当您分配到q
时,您实际上已分配给i
。
您打印的内容是i
的值,然后是q
引用的对象的值(i
)。
答案 1 :(得分:0)
由于q
是i
的引用,这意味着它只是i
的别名(i
的其他名称)。
因此,i
具有相同q
的任何值都将具有!
答案 2 :(得分:0)
初始化参考时如下
int i = 9;
int &q =i;
q只是becom的另一个别名(你可以说是昵称),所以如果q发生任何变化,它也会反映在i中,反之亦然。
答案 3 :(得分:0)
初始化变量时:
int&amp; q = i;
每当你改变我,你就会改变q而反之亦然。
q的引用具有相同的i值,因此主题指向相同的内存位置。