2011-01-14 71 views
0

有人能解释为什么下面的代码片段的输出是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的整数内容已更改,而不是地址(它的存储位置)。

感谢,

回答

1

变量r是对i的引用,它就像一个指针,除了不是说* r = 20; 你只是说r = 20;并改变了r的值。

1

当你做一个参考,它几乎就像一个指针,所以当你可以改变R您实际上改变了什么r为指向这也是我。

实际上要更精确的参考不是指针或地址,它是的对象。至少在C++世界。

0

想想为:

int i = 10; 
cout << i << endl; 

int *p = &i; 
*p = 20; 
cout << i << endl; 

这基本上是发生了什么幕后

+0

是,C程序员可以看看它的方式,但它以独特的重要的一提的是*不*一指针,但*是*对象。 – SRM 2011-01-14 16:27:03