有人能解释为什么下面的代码片段的输出是20
?变量的引用和地址(内存位置)
int i = 10;
cout << i << endl;
int &r = i;
r = 20;
cout << i << endl;
首先,可变i
存储整数值10
然后10
显示。 然后r
(的r
内存位置)的地址设置为i
这是10
然后r
成为20
但为什么i
变化20
呢?
r
的整数内容已更改,而不是地址(它的存储位置)。
感谢,
有人能解释为什么下面的代码片段的输出是20
?变量的引用和地址(内存位置)
int i = 10;
cout << i << endl;
int &r = i;
r = 20;
cout << i << endl;
首先,可变i
存储整数值10
然后10
显示。 然后r
(的r
内存位置)的地址设置为i
这是10
然后r
成为20
但为什么i
变化20
呢?
r
的整数内容已更改,而不是地址(它的存储位置)。
感谢,
变量r是对i的引用,它就像一个指针,除了不是说* r = 20; 你只是说r = 20;并改变了r的值。
当你做一个参考,它几乎就像一个指针,所以当你可以改变R您实际上改变了什么r为指向这也是我。
实际上要更精确的参考不是指针或地址,它是是的对象。至少在C++世界。
想想为:
int i = 10;
cout << i << endl;
int *p = &i;
*p = 20;
cout << i << endl;
这基本上是发生了什么幕后
是,C程序员可以看看它的方式,但它以独特的重要的一提的是*不*一指针,但*是*对象。 – SRM 2011-01-14 16:27:03