C++ 引用
1. 作用: 给变量起别名
int a = 10;
int &b = a;
- 引用必须初始化
- 引用在初始化后,不可以改变
- 本质:在C++内部实现是一个指针常量(指向不可变,指向的值可变)
2.引用作函数参数
void mySwap01(int a, int b)
{
int temp = a;
a = b;
b = temp;
}
void mySwap02(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
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);
return 0;
}
3.引用作函数返回值
- 不要返回局部变量引用,局部变量在函数返回时被释放,返回别名也没用
- 函数返回引用时,函数调用也可以作为左值!
int& test01()
{
int a = 10;
return a;
}
int& test02()
{
static int a = 10;
return a;
}
int main()
{
int& ref = test01();
int& ref2 = test02();
cout << "ref2 = " << ref2 << endl;
test02() = 1000;
cout << "ref2 = " << ref2 << endl;
return 0;
}
4.const修饰引用
- const修饰后引用不可更改
- 用于函数形参,防止误操作
void showValue(const int& v)
{
cout << v << endl;
}
void func(int &a)
{
cout << "func (int &a) 调用 " << endl;
}
void func(const int &a)
{
cout << "func (const int &a) 调用 " << endl;
}
int main()
{
int a = 10;
func(a);
func(10);
return 0;
}