引用做参数与引用做返回值
一、引用做参数
引用做参数时,和C语言中的“传址”是一个道理,即通过函数来改变身处主函数中的变量。
例:
void fun(int &b)
{
b = 22;
}
int main()
{
int a = 21;
fun(a);
return 0;
}
执行fun函数后,主函数中的整型变量a的值就变为了22,因为a和b实际上是同一处空间但是有了不同的名字。
可以拓展到交换主函数中变量的值:
void fun(int &a,int &b)
{
int c = a;
a = b;
b = c;
}
int main()
{
int a = 22;
int b = 23;
fun(a,b);
return 0;
}
执行完fun函数后,主函数中的变量a和变量b的值就会交换。
二、引用做返回值
形式:
int& fun()
{
static int a = 22;
return a;
}
因为返回值的类型是int&,所以使用一个int变量来装返回值时编译器会报错。
正确的写法是用引用来装:
int& fun()
{
static int a = 22;
return a;
}
int main()
{
int&b = fun();
return 0;
}
注意:不要返回局部变量,因为函数中局部变量的生命周期到函数执行完毕就结束了,空间就被系统释放了,这之后再使用这块空间是非法的。