1. 引用的基本语法
数据类型 &别名=原名
别名和原名操控的是同一块内存,功能类似equivalence.
int a=10;
int &b=a;
int &c; //错误,引用必须初始化
int c=20;
int &b=c; //错误,引用一旦初始化,不可以更改引用.
2.引用的用途:引用做函数参数,可以实现形参修饰实参的作用。示例:
a.值传递
void myswap01(int a, int b)
{
temp=a;
a=b;
b=temp;
}
b.地址传递
void myswap02(int *a, int*b)
{
int temp=*a;
*a=*b;
*b=temp;
}
c. 引用传递
void myswap03(int &a, int &b)
{
int temp=a;
a=b;
b=temp;
}
int main(){
int a=10;
int b=20;
myswap01(a,b);
myswap02(*a,*b);
myswap03(a,b);
}
3. 引用做函数返回值
注意不要返回局部变量的引用
函数的引用可以作为左值
int& test02() //声明一个类型为引用的函数test02
{
static int a=10; //静态变量,存放在全局区,全局区的数据在程序结束后由系统释放
return a;
}
int &ref=test02(); //test02是一个类型为引用的变量,所以要声明一个类型为引用的变量ref去接收其数据。
cout <<ref<<endl; //会输出10
test02()=20; //函数的引用可以作为左值
cout <<ref<<endl; //会输出20,因为ref和test02()都是全局变量a的引用,都是指向同一处内存。