-
引用(&)是标识符的别名
-
定义一个引用时,必须同时对它进行初始化,使它指向一个已存在的对象
例如:
int i,j;
int &ri = i; //定义int引用ri,并初始化为变量的引用
j = 10;
ri = j; //相当于i = j
-
一旦一个引用被初始化后,就不能改为指向其他对象
-
引用可以作为形参
例题:输入两个整数交换后输出
思路1.值传递(错误示例)
void swap(int a, int b){
int t = a;
a = b;
b = t;
}
int main()
{
int x =5, y = 10;
cout << "x = " << x << ",y = " << y << endl;
swap(x, y);
cout << "x = " << x << ",y = " << y << endl;
return 0;
}
运行结果:
从运行结果可以明显看出,这样理所当然的操作,是错误的,因为这里的值传递只是单向的,主函数传递给子函数的数值,子函数中虽然可以使用,但是并没有将改变后的值返回到主函数中,故而值不变!
那么应该怎样修改呢?
思路2.引用传递:
#include <iostream>
using namespace std;
void swap(int &a, int &b){//表示a和b是两个引用
int t = a;
a = b;
b = t;
}
int main()
{
int x =5, y = 10;
cout << "x = " << x << ",y = " << y << endl;
swap(x, y);
cout << "x = " << x << ",y = " << y << endl;
return 0;
}
代码分析:
只需在原程序的子函数中,将a和b定义为引用类型即可。可理解为:a和b分别是x和y的别名。这样主函数的变量x,y和子函数的变量a,b就是双向传递的了。如下图:
运行结果: