首页 > 编程知识 正文

引用作为参数的人函数,函数的形参是指针变量的引用

时间:2023-05-05 05:30:33 阅读:273341 作者:1030

在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);

输出如下所示:

我们会发现引用和变量名指向的是同一个地址。

引用赋值 i = 30;int i2 = 0;//i_r = &i2; //错误:一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向另外一个对象。i_r = 25; //i的值也会发生变化 引用作为函数的形参

我定义一个交换函数:

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.引用一旦初始化指向了一个对象,就不能再指向另外一个对象。而指针可以在任何时候指向另外一个对象

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。