C++中引用在函数中的使用
引用做函数参数[*]作用:做函数参数时,可以利用引用让形式参数修饰实参
[*]优点:可以简化指针修改实参
[*]代码示例:
//值传递传递
void swap01(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
//地址传递
void swap02(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
//引用做函数参数;
void swap03(int &a,int &b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int main()
{
int a = 10;
int b = 20;
int& c = a;
//swap01(a,b); 值传递,形参不会修饰实参
//swap02(&a, &b); 地址传递,形参可以修饰实参
swap03(a, b);//引用做函数参数,形参会修饰实参
cout << "swap02 a= " << a << endl;
cout << "swap02 b= " << b << endl;
system("pause");
}引用做函数返回值
[*]注意:不要返回局部变量引用
[*]用法:函数调用作为左值
代码示例://不能返回局部变量局部变量由系统管理释放
//引用做函数返回值,函数调用作左值
int& test01()
{
int a = 10;//局部变量存放在栈区
return a;
}
int& test02()
{
static int a = 10; //static 静态变量存放在四区中的 全局区
return a;
}
int main()
{
//int &a = test01();
//cout << "a= " << a << endl;//第一次输出 系统做保留
//cout << "a= " << a << endl;//第二次输出错误因为系统将内存释放
int& ref = test02();
cout << "test02ref=" << ref << endl; //ref = 10
cout << "test02ref=" << ref << endl;
test02() = 100;
cout << "test02ref=" << ref << endl; //ref = 100
cout << "test02ref=" << ref << endl;
system("pause");
return 0;
}
引用的注意事项
[*]引用必须初始化 (不能取无效地址)
[*]引用在初始化后,不可以改变。(一个别名不可以在作为其他的别名)
总结参考自https://www.bilibili.com/video/BV1et411b73Z?p=90
https://blog.51cto.com/u_15172160/4795812
页:
[1]