目录
一、定义
引用:已经定义的变量的别名。
作用:作为函数的形参,函数将使用原始数据而不是形参。
特点:引用变化了,原始数据也变了,引用声明的时候要赋值(引用与指针的主要区别)。
代码:int& rp; rp 是指向int的引用。
#include<iostream>
#include<cstdio>
using namespace std;
void my_swap(int& a, int& b)
{
int tmp = a;
a = b;
b = tmp;
}
int cube(const int& x)
{
return x * x * x;
}
int cube_(int& x)
{
return x * x * x;
}
int main()
{
int a = 4, b = 5;
my_swap(a, b);
cout<< a<< " "<< b<< endl;
cout<< cube(a+3);
//cout<< cube_(a+3);
return 0;
}
注意:如果是my_swap(a+3, b+4); 这样子是违法的。
使用cube(a+3); 是合法的。
使用cube_(a+3); 是非法的。
二、引用的场景
1. 当数据比较大的时候(结构体或者类),引用参数很有用。
2. 尽可能的使用const
- 使用const可以避免无意中修改数据的编程错误
- 使用const使函数能够处理const和非const实参,否则只能够处理非const数据
- 使用const引用是函数能够正确生成并使用临时变量
3. 函数返回值为引用
如果函数的返回值为引用的话,不要将返回值指向一个临时变量,因为函数结束之后该变量就不复存在,那么引用也就没了,同样的也要注意不要返回临时变量的指针。因此应该避免返回函数终止时不再存在的内存单元引用。
#include<iostream>
#include<cstdio>
using namespace std;
int& function(int& x, int& y)
{
x = x*y + 5;
return x;
}
int main()
{
int a = 4, b = 5;
int res = function(a, b);
cout<< a<< endl;
cout<< res<< endl;
// 重点
function(a, b) = 8;
cout<< a<< endl;
cout<< res<< endl;
return 0;
}
如果将上述function函数前面加入const,就不可以使用代码function(a, b) = 8;违法
const int& function(int& x, int& y)