我是C ++的新手。使用以下最小程序:
#include <iostream>
int main()
{
int i, &ri =i;
i = 5; ri = 10;
std::cout << i << " " << ri << std::endl;
}
我观察到输出是
10 10
我期望的位置
5 10
我的推理方法是:
&ri
指的是i
,因此ri
的初始值等于i
(无论是什么)。i
时,ri
的值将变为5。ri
的值更改为10时,从ri
到i
的引用将被删除,它现在占据一个唯一空间,值为10,并且不不再链接到i
。std::cout << i and << ri
时,结果应显示为5 10
。相反,似乎i
是指ri
(我通过更改分配给ri
的值进行检查)。
您能告诉我我在想什么吗?
答案 0 :(得分:4)
答案 1 :(得分:2)
r
和ri
只是同一事物的两个名称。您首先将5
分配给该事物,然后再分配10
。在那之后,当然,一件事就是10
,并用任何名称来引用它都会给你那个共同的价值。
答案 2 :(得分:1)
参考表示您正在分配变量&i
,使其具有与设置为-i
相同的变量相同的内存地址。因此,更改有关该地址上的信息的某些操作会更改正在查看该地址以获取其值的任何变量(即引用或指针变量)。
答案 3 :(得分:1)
ri是对i的引用。引用就像指针一样工作。 ri和我是同一个记忆。如果您输入
std::cout << &i << " " << &ri << std::endl;
都是一样的。将ri设置为10不会赋予它新的内存,而是设置当前的电流。