通过程序的运行来了解一下引用。
#include <iostream>
using namespace std;
int main()
{
int a = 99;
int &b = a;//引用声明时必须初始化
int c = 88;
//输出ab的地址
cout << "&a=" << &a << "\n&b=" << &b << endl;
//改变前的值
cout << "改变前的值a=" << a << "b=" << b << endl;
//a++后的值
a++;
cout << "a++后的值a=" << a << "b=" << b << endl;
//b++后的值
b++;
cout << "b++后的值a=" << a << "b=" << b << endl;
//b又引用c
b = c;
//输出abc的地址
cout << "&a=" << &a << "\n&b=" << &b << "\n&c="<<&c<<"\nb=c后的地址"<<&b<<endl;
cout << "b又引用c a=" << a << " b=" << b << " c=" << c << endl;
//c++后的值
c++;
cout << "c++后的值 a=" << a << " b=" << b << " c=" << c << endl;
//b++后的值
b++;
cout << "b++后的值 a=" << a << " b=" << b << " c=" << c << endl;
//a++后的值
a++;
cout << "a++后的值 a=" << a << " b=" << b << " c=" << c << endl;
cin.get();
return 0;
}
通过程序可以看到:
1.在b引用了a后,b的地址就等于a的地址。
2.a的值改变b的值也跟着改变。
3.b的值改变a的值也跟着改变。
在b又“引用”c后,b的地址仍然与a相同,而与c无关,b=c;语句是将c的值赋值给b,而b是a的引用,因此a=c;b=c;
在后面的代码中,无论c如何变化都不会影响ab的值。
简而言之,可以通过初始化来设置引用,但不能通过赋值来设置。