引用就是给变量起别名,它并没有重新建立了一个副本 ,对引用做的任何操作都是对其代表的变量的改动。由于引用并不生成副本,所以在传递参数的时候效率更高。
一:定义
如:int i;
int &a=i;
这里就建立了一个对i的引用。要注意的是引用在定义的时候必须指明它要引用的变量。如int &a;a=i;这种是错误的。
二:使用
1.直接使用
#include <iostream>
using namespace std;
int main()
{
int i = 10;
int &a = i;
cout << "i=" << i << " a=" << a << endl;
return 0;
}
2.作为函数参数使用。
引用参数对应的是实参变量的别名,所以被调函数里面的形参的改变可以改变主调函数的实参的值。
#include <iostream>
using namespace std;
void swap(int &a, int &b)
{
int t;
t = a;
a = b;
b = t;
}
int main()
{
int x = 1, y = 2;
cout << "交换前:";
cout << "x=" << x << " y=" << y << endl;
swap(x, y);
cout << "交换后:";
cout << "x=" << x << " y=" << y << endl;
return 0;
}
3.作为函数返回值使用
若函数返回值为引用,则返回的不仅仅是一个值,函数调用结果是一个左值,可以对它的存储空间进行运算。
#include <iostream>
using namespace std;
int &max(int &a, int &b)
{
if (a > b)
return a;
else
return b;
}
int main()
{
int x = 1, y = 2;
int z;
z = max(x, y)++;
cout << "x=" << x << ", y=" << y << " ,z=" << z << endl;
return 0;
}
可见它对y进行了加一,是因为函数 返回的是b他是y的引用,所以y的结果变为了3.。
注意:函数返回值为引用时,不能返回局部变量的引用。