通过查看内存学习引用

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

首先引用一个小例子:

 

#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经过函数转换之后,值也发生了交换,达到了我们的目的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值