为什么不是a=7,b=5

 

从内存角度简单给你分析下,

调用函数的时候,是把值复制一份过去,函数内部的确做了交换,函数执行完,函数的变量全部释放,所以主函数不会有影响

因为值参交换是没有效果的,得用引用或指针

如果改成int swap(int &a,int &b),函数内部修改a和b的值可以实现函数外部a和b值的交换

swap(int a,int b)函数中传进去的是变量的值,而不是变量的地址,所有不会实现交换。

如果要实现变量值的交换,需要传进swap函数的应该是变量的地址或者引用。

swap函数修改如下,才能实现交换:

第一种方法:void swap(int *a,int *b);//传地址的方式,C和C++都可以用

第二种方法:void swap(int &a,int &b);//引用的方式,C没有引用,不能用,C++可以

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m