C++中关于引用的问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 03:56:19
#include<iostream>
using namespace std;
void main()
{
int one;
one=5;
int &r=one;
cout<<"r\t"<<r<<endl;
cout<<"&one\t"<<&one<<endl;
cout<<"&r\t"<<&r<<endl;

int two=8;
r=two;
cout<<"one\t"<<one<<endl;
cout<<"&two\t"<<&two<<endl;
cout<<"&r\t"<<&r<<endl;
cout<<"r\t"<<r<<endl;
}

当把two的值赋给r后,在输出时r和one的值都改变了,但为什么它们的地址没变??
高手解释解释!

首先:引用 int & r=one; 这里r是one的一个“别名”,实际上和one共占用同一段内存空间。因此无论是改变r或者是one,那一段内存空间都会发生改变,然后我们读取r或者one的时候都是改变后的值,同时,由于r和one是同一段内存空间,因此他们的值肯定是随时都是一样的。
赋值后他们的地址没有变是因为他们的作用域范围内,它们一直在寄存器中占用了那一段内存,不会重新分配,所以地址没有变。