通过查看内存学习引用

来源:互联网 发布:虚拟机和系统网络连接 编辑:程序博客网 时间:2024/05/02 02:00

本来学习引用的时候,只知道可以通过函数达到修改实参的目的,但是倘若不用引用的话,则达不到,于是有一个查看内存的想法,这样或许可以对引用理解的更透彻。

首先引用一个小例子:

 

#include <iostream>using namespace std;void swap(int x,int y){int temp;temp=x;x=y;y=temp;}void main(){int a=3,b=4;cout<<"a="<<a<<",b="<<b<<endl;swap(a,b);cout<<"a="<<a<<",b="<<b<<endl;}

这是一个简单的小例子,首先我们看一下如果不是使用引用的话,实参和形参的地址。

下面是实参ab的地址:

 

下面是形参xy的起始地址:

 

 

下面是xy交换后的地址

 

 

通过上面的对比,我们可以看到,形参xy经过交换之后,的确相互交换了自己的值,但是,实参和形参占有了不一样的内存空间,所以说,即使我们对传递过来的形参xy进行交换成功之后,我们的实参还是原来的样子,还是a=3,b=4;

与之相对于,倘若我们使用应用的话,结果是什么样的呢?

首先修该函数的实现代码如下:

 

void swap(int &x,int &y){    int temp;    temp=x;    x=y;    y=temp;}

 

然后进行调试,我们下面是刚进入函数式xy的初始地址

  

我们发现,现在的形参xy的地址和实参ab地址一样,这就解释了为什么说使用引用的时候,声明定义的引用变量都是原来变量的一个别名

函数运行结束的时候,xy的地址如下:

  

所以,我们的ab经过函数转换之后,值也发生了交换,达到了我们的目的。

原创粉丝点击