为什么这两个结果会不同,为什么没用指针的就不会交换
2条回答 默认 最新
- CSDN专家-天际的海浪 2022-01-16 02:59关注
你第一个代码是传值,
传值时,通过调用swap()无法改变主函数中a,b的值,因为传给swap()的a,b参数实际上是主函数中a,b变量的一份拷贝,
swap()的a,b参数和主函数中a,b的地址并不一样,交换的只是swap()的a,b参数的值,当调用完swap后,swap()的a,b参数所占的内存空间会被释放,所以主函数中a,b的值并没有被改变。你第二个代码是用指针传址,
传址时,通过调用swap()可以改变主函数中a,b的值,因为此时传递的是a,b的地址,在swap()中改变*a,*b的值就相当于在改变主函数中a,b的值,因为他们的地址是一样的,即使调用完swap后,它所占的内存空间会被释放,但主函数中a,b的值已被改变。如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
- ¥20 关于URL获取的参数,无法执行二选一查询
- ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
- ¥15 marlin编译错误,如何解决?
- ¥15 有偿四位数,节约算法和扫描算法
- ¥15 VUE项目怎么运行,系统打不开
- ¥50 pointpillars等目标检测算法怎么融合注意力机制
- ¥20 Vs code Mac系统 PHP Debug调试环境配置
- ¥60 大一项目课,微信小程序
- ¥15 求视频摘要youtube和ovp数据集