有人可以解释为什么以下代码段的输出是20
?
int i = 10;
cout << i << endl;
int &r = i;
r = 20;
cout << i << endl;
首先,变量i
存储整数值10
然后显示10
。
然后,r
的地址(r
的内存位置)设置为i
,10
然后r
变为20
但为什么{ {1}}更改为i
?
20
的整数内容已更改,而不是地址(内存位置)。
谢谢,
答案 0 :(得分:1)
当你做一个引用它几乎就像一个指针,所以当你可以改变r你实际上改变了r指向的那个也是我。
实际上更精确的是,引用不是指针或地址,是对象。至少在c ++世界中。
答案 1 :(得分:1)
变量r是对i的引用,它就像一个指针,除了不是说* r = 20; 你只说r = 20;这会改变r的值。
答案 2 :(得分:0)
将其视为:
int i = 10;
cout << i << endl;
int *p = &i;
*p = 20;
cout << i << endl;
这基本上就是在幕后发生的事情