int a =10; //有一块4字节名称为a的内存空间存放10,通过对a赋值可以操控这块内存int&b = a; //给这块内存起别名b,通过对b赋值可以操控这块内存。&a和&b输出结果都是这块内存的地址
注意:
int a =10;
int c =20;int&b; //引用必须要初始化,非法int&b1 = a;
b1 = c;//赋值操作,而不是给c起别名
引用做函数的参数:
void fun(int&a)
{
a =10; //main里面a的别名,操控同一块内存}voidmain(){
a =0;fun(a);//a的值会改变}
引用做函数返回值:
int&fun(){staticint a =0;return a;//对于返回值的理解:可将fun()看成一个变量,类型为int&,即引用,fun()为a的引用}voidmain(){int&g =fun();//g为a的引用
g =10;//修改a的引用的值,即修改a的值fun()=100;//返回为引用的函数可以当左值,修改a的引用的值,即修改a的值system("pause");}
拓展:
int*fun2(int*a){staticint*aa = a;*aa =100;return aa;}intmain(){int a =0;fun2(&a);
cout << a << endl;*fun2(&a)=1;//返回为指针的函数也可以当左值
cout << a << endl;system("pause");return0;}
引用的本质:指针常量
int a =1;
int&b = a; //编译器会转化为 int * const b = &a;
b =10;//编译器会转化为 *b = 10;