引用是C++中的一种特有的语法,用以优化C中只能使用指针的缺点,同时也是有自己语言特性的一个语法。
如果不使用引用,在这里的程序就无法正常实现它的功能。
#include<iostream>
using namespace std;
void swap(int a, int b) //定义一个swap函数实现数据的交换
{
int t = a; //定义参数t,a的值赋给t
a = b; //b的值赋给a
b = t; //t的值再次赋给b,使b等于原来的a
}
int main()
{
int x =5, y =8;
cout<<x<<y<<endl;
swap(x,y);
cout<<x<<y<<endl;
return 0;
}
上面的例子看似可以正常运行,实际上在编译环境中得到的结果是x和y并没有发生任何交换。
以上情况发生的原因就是在x,y将值赋给ab后,xy与ab间的关系就不存在了,因此swap函数的运行是与xy无关的,这里只实现了参数的单向传递。
引用的功能就在于可以将两个变量“绑定”起来,实现参数的双向传递,以便于类似以上的程序顺利运行。如:
int i,j;
int &r=i;
j = 10;
j = r;
以上的代码就是将r与i“绑定”,在更改r的值时,i的也就相应的发生改变,反之亦然。
注意:一个引用被初始化之后,就不能再指向其他对象
之前的代码就可以改变为:
#include<iostream>
using namespace std;
void swap(int& a, int& b) //定义一个swap函数实现数据的交换
{
int t = a; //定义参数t,a的值赋给t
a = b; //b的值赋给a
b = t; //t的值再次赋给b,使b等于原来的a
}
int main()
{
int x =5, y =8;
cout<<x<<y<<endl;
swap(x,y);
cout<<x<<y<<endl;
return 0;
}
以上即可完成xy的交换
注意:
引用必须初始化,一开始就要定下引用的原名,如int &b=a