在C++中引用就相当于是给变量起了一个别名,有点类似于指针,但是与指针又不同。
引用的初始化 int i;i = 10;//变量i的引用//引用必须在创建的时候就要初始化,而指针可以在任意的时候初始化//引用就相当于是给变量起了一个别名int& i_r=i; //i_r指向了变量i的内存地址//我们可以查看地址TRACE("the addr of i:%dn", &i);TRACE("the addr of i_r:%dn", &i_r);输出如下所示:
我们会发现引用和变量名指向的是同一个地址。
我定义一个交换函数:
void swap(int& x, int& y){int tmp;tmp = x;x = y;y = tmp;}在main函数中调用:
int x1 = 100;int y1 = 200;TRACE("Before swap x1=%d y1=%dn",x1,y1);//因为形参是引用,所以形参会指向实参的地址单元,这样在函数内部对形参的修改,就会改变实参的值swap(x1, y1);TRACE("After swap x1=%d y1=%dn", x1, y1);输出如下:
在.h头文件定义如下:
int s_i;double d[20];double& setdouble(int i);int& setint();实现如下:
double& CmfcusereferenceDlg::setdouble(int i){return d[i];}int& CmfcusereferenceDlg::setint(){return s_i;}在main函数中调用如下:
//练习引用作为返回值setdouble(1) = 30.0; setint() = 5.0;我们可以看到成员变量值的变化。
指针和引用的区别:
1.引用必须在创建的时候就要初始化,而指针可以在任意的时候初始化
2.引用一旦初始化指向了一个对象,就不能再指向另外一个对象。而指针可以在任何时候指向另外一个对象