一、 引用
1. 引用的基本使用
作用:给变量起别名
本质:引用的本质在c++内部实现是一个指针常量
语法:数据类型 &别名 = 原名
示例:
int main()
{
int a = 10;
int &b = a;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
b = 100;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
return 0;
}
输出结果:
2.引用的注意事项
***引用必须初始化
***引用在初始化后,不可以改变
示例:
int main()
{
int a = 10;
int b = 20;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "---------------" << endl;
//int &c; //错误,引用必须初始化
int& c = a; //一旦初始化后,就不能更改
c = b; //赋值操作,不是更改引用
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
return 0;
}
输出结果:
3. 引用做函数参数
作用:函数传参时,可以利用引用的技术让形参修改实参
优点:可以简化指针修改实参,通过引用参数产生的效果同按地址传递是一样的。引用 的语法更清楚简单。
示例:
//1. 值传递
void Swap01(int a, int b) {
int temp = a;
a = b;
b = temp;
}
//2. 地址传递
void Swap02(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
//3. 引用传递
void Swap03(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int a = 10;
int b = 20;
Swap01(a, b);
cout << "a:" << a << " b:" << b << endl;
a = 10;
b = 20;
Swap02(&a, &b);
cout << "a:" << a << " b:" << b << endl;
a = 10;
b = 20;
Swap03(a, b);
cout << "a:" << a << " b:" << b << endl;
return 0;
}
输出结果:
4. 引用做函数返回值
作用:引用可以做为函数的返回值
注意:不要返回局部变量的引用
用法:函数调用作为左值
示例:
//返回局部变量引用
int& test01()
{
int a = 10; //局部变量,函数结束时释放
return a;
}
//返回静态变量引用
int& test02()
{
static int a = 20;
return a;
}
int main()
{
//不能返回局部变量的引用
int& ref = test01();
cout << "ref = " << ref << endl;
cout << "ref = " << ref << endl;
//如果函数做左值,那么必须返回引用
int& ref2 = test02();
cout << "ref2 = " << ref2 << endl;
cout << "ref2 = " << ref2 << endl;
//函数调用作为左值
test02() = 1000;
cout << "ref2 = " << ref2 << endl;
cout << "ref2 = " << ref2 << endl;
return 0;
}