C语言自定义函数Swap实现两个数的交换

 

前言

  • 在初识c语言阶段,我们如何使用自定义函数来实现两个数的swap,通过简单的案例,能够进一步加深我们对于函数参数的理解和使用

 

错误示范:

当我们在刚开始接触的c语言时,我们想要交换两个数的值,可能会有如下情况

6b2888e33cc24e13aaa4f406e965c931.png

当我们自信满满的以为实现了我们想要的效果,一运行却发现a和b的值根本没有发生改变

 

fb1a94b644724582be29bc7ef59ebf0d.png

 

这是为什么呢?

这就是涉及到在c语言中函数的运行过程。实际上在我们将a,b传入到函数的过程中,实际上仅仅传入了a,b的值,而不是涉及a,b本身,也就是我们所说的传值调用,只是把a,b的值给了你,存储在临时的变量里,并不会影响a,b原本的值。

重点来了

  因此当我们想要通过函数去交换两个数的值的时候,我们应该通过变量的地址来完成操作,即我们所说的传址调用,因此我们的函数的参数应该改为指针变量用来接收a,b的地址,通过地址来实现对a,b值的交换。因此将代码做以下修改:

f9f4c12e15b0439fb9fee03cc25bbfdf.png

为了方便理解,我们将参数名改为了pa,pb,以此来区别在主函数中的a,b。可以看到我们将函数原来的参数类型由 int 换为了int* ,因此我们可以通过 *pa来间接修改a的值,从而完成交换。需要注意的是,因为我们函数所接受的参数 为int *类型,所以我们传入的应该是一个地址,因此我们需要在a和b前加上取地址符号&,传入符合函数的参数。

 


总结

  通过swap函数的实现,我们可以简单的区分传值调用传址调用,当我们使用的是传值调用的时候,函数的会创建临时变量去接收,新开辟了一片区域来存储数值,相当于拷贝了一份数值,对拷贝的值进行处理,自然不会影响到原本的数据。而当我们使用传址调用时,就可以通过地址准将地找到原本数据存储的位置从而进行修改。

  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值