语法:数据类型 & b = a;
可以理解为给一个数据起别名。可以通过操纵a的别名b给a赋值
注意事项:
1.一旦引用对对象确定,不可以再继续更改。
2.引用可以作为左值
引用的实际含义:指针常量(即 数据类型 * const ref = &a)
使用引用可以达到地址传递的作用
void swapTest(int &a, int &b){
int temp = a;
a=b;
b=temp;
}
int main(){
int a=1;
int b=2;
swapTest(a, b);
return 0;
}
将a和b传入swapTest中,用两个引用接收他们,因为引用的本质是常量指针,常量指针无法更改指向但是可以修改数据。所以其实就是地址传递。
注意事项:不要返回局部变量
例:
int & test(){
int a = 10;
return a;
}
int main(){
int a = test();
cout<<"a = "<<a<<endl;
return 0;
}
如果在函数体中返回的是局部变量,会出现乱码,但是第一次可以正确输出a的值,因为编译器自动做了保留。原理是函数中的数据存放子啊栈上,在函数调用后会自动释放。
其中的提示的翻译是“对与返回的局部变量“a”关联的堆栈内存的引用”