注意事项
- 引用必须初始化
- 引用在初始化后,不可以更改
引用做函数参数
作用:函数传参时,可以利用引用的技术让形参修饰实参
void mySwap(int &a,int &b)
{
int temp=a;
a=b;
b=temp;
}
int main()
{
mySwap(a,b);
return 0;
}
引用做函数返回值
//返回局部变量
int& test01(){
int a=20;
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;
}
引用的本质
指针常量
//发现是引用,转换为*int const ref=&a;
void func(int& ref)
{
ref=100;//ref是引用,转换为*ref=100;
}
int main()
{
int a=10;
//自动转换为 int *const ref=&a;指针常量是指针指向不可更改的
ref=20;//内部发现是ref引用,自动转换为*ref=20;
cout<<"a:"<<a<<endl;
cout<<"ref:"<<ref<<endl;
func(a);
return 0;
}