目录
1.引用是什么
2.引用的注意事项
1.引用必须初始化
2.引用在初始化后就不可改变
3.引用做函数参数
4.引用做函数返回值
1.不要返回局部变量的引用
2.函数调用作为左值
5.引用的本质
6.常量引用
引用就是给一个变量起别名
#include
using namespace std;
using ll = long long;
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int a = 10;
int &b = a;
b = 20;
cout << a << endl;
return 0;
}
此时b是a的别名,修改了b也就修改了a
int &b;
这样是错误的,没有初始化
int &b = a;
b = c;
这样是错误的,初始化后又对它进行了改变
它并没有更改引用,而是进行了赋值的操作,将c的值赋值给了b
而b是a的引用,所以最后abc均相等,且值都为c的值
可以简化指针做函数参数
也是形参修饰实参
举例:
交换函数
#include
using namespace std;
using ll = long long;
void swap(int &a,int &b){
int t = a;
a = b;
b = t;
}
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int a = 10;
int b = 20;
swap(a,b);
cout << a << endl << b << endl;
return 0;
}
因为局部变量存在栈空间里,当函数执行完时,内存也会被释放掉
static静态变量,不会因为函数执行完就被释放掉
#include
using namespace std;
using ll = long long;
int& test(){
static int a = 10;
return a;
}
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int& b = test();
cout << b << endl;
test() = 200;
cout << b;
return 0;
}
引用在c++里本质上是一个指针常量
指针的指向不可以修改,指针指向的值可以被改动
用来修饰形参,防止误操作
const int & a = 10;
//实际上这段代码的意思是
//int temp = 10;
//const int & a = temp
编译器帮了我们,使我们可以写得更加简洁
此时的a不可修改值
void print(const int & b){
b = 20;//错误的,此时b的值不可以修改
printf(b);
}
这样使用常量引用,防止了可能的修改,防止误操作