引用:给变量起别名
1、语法:数据类型 &别名 = 原名;
int a=10;
int &b=a;
b=20;
cout<<a<<endl; //也是20
2、注意事项:
1)引用一定要初始化 int &b; //错误!
2)初始化成功后不可更改
3)引用传递与地址传递(形参会修饰实参)
引用传递:
void swap1(int &a, int &b){
int temp = a;
a = b;
b = temp;
}
地址传递:
void swap2(int *a,int *b)
int temp = *a;
*a = *b;
*b = temp;
int main(){
int a =10;
int b = 20;
swap1(a, b);
swap2(&a,&b)
return 0;
}
4、引用的本质:指针常量,指针指向的方向不可改变,值可以改变
5、常量引用
引用必须引一块合法的内存空间
int &ref = 10; //这样是不允许的,不能引用常量区
const int &ref = 10;//加上const编译器将代码修改,相当于 int temp = 10; const int &ref = temp;
加入const之后变为可读状态,不可修改
6、引用做返回值
1)不要返回局部变量的引用
局部变量存放在系统栈区,第一次运行正确,多次运行变量被释放掉,造成结果错误
2)如果函数返回为一个引用,则函数调用能作为左值传入,函数返回值结果为右值传入的数据