C++增加引用类型, 主要是把它作为函数参数,以扩充函数传递数据的功能,较指针参数来得更加安全直观。将引用作为参数传递的时候,实参初始化形参的时候不分配内存空间,也不调用拷贝构造函数,因此更加能够提高运算的性能。所以我们应该尽可能地使用引用,而非指针,但是应该要注意,因为局部变量具有自己短暂的生命周期,因此不能够返回对一个局部变量的引用。
引用通常是在被定义的时候被初始化,但是当它作为参数的时候,则是在被调用的时候被初始化。这时候对引用所做的改变就是对被引用的变量所做的改变。
引用对变量的访问是直接访问,指针则是间接访问,指针有自己独立的地址和内存空间,引用则是变量的别名没有独立的内存空间。
传递变量的指针
//形参是指针变量,实参是一个变量的地址,调用函数时,形参(指针变量)指向实参变量单元。
//函数通过使用指针变量作形参的时候,能够实现两个指针变量所指向的值的互换。
#include <iostream>
using namespace std;
int main( )
{ void swap(int *,int *);
int i=3,j=5;
swap(&i,&j); //实参是变量的地址
cout<<i<<" "<<j<<endl; //i和j的值已互换
return 0;
}
void swap(int *p1,int *p2) //形参是指针变量
{ int temp;
temp=*p1; //以下3行用来实现i和j的值互换
*p1=*p2;
*p2=temp;
}
利用“引用形参”实现两个变量的值互换
#include <iostream>
using namespace std;
int main( )
{ void swap(int &,int &);
int i=3,j=5;
swap(i,j);
cout<<"i="<<i<<" "<<"j="<<j<<endl;
return 0;
}
void swap(int &a,int &b) //形参是引用类型,在函数被调用的时候,引用被初始化
{ int temp;
temp=a;
a=b;
b=temp;
}
//输出结果为
// i=5 j=3