交换两个数为什么一定要用指针??

voidswap(inta,intb){inttemp;temp=a;a=b;b=temp;}这个为什么不行???... void swap(int a,int b){
int temp;
temp = a;
a = b;
b = temp;

}

这个为什么不行???
展开
 我来答
百度网友b0bba24
推荐于2018-04-24 · TA获得超过887个赞
知道小有建树答主
回答量:446
采纳率:0%
帮助的人:457万
展开全部
函数参数的传递的是值,这样,swap(int a,int b)中,a和b都只是得到了实参的值而已,然后就跟实参没有任何关系了,你说这样交换参数的值能影响到实参吗?
如果用swap(int* a,int* b),依然是得到实参的值,但由于a,b是指针,得到的将是地址,那么参数和实参所指的地址是一样的,如果在函数体里交换地址所指的存储内的东西,那么就是真的交换了
Storm代理
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto... 点击进入详情页
本回答由Storm代理提供
没有响应m2
2013-03-06 · TA获得超过8386个赞
知道大有可为答主
回答量:7579
采纳率:33%
帮助的人:3406万
展开全部
不一定非要指针的啊 数组也可以~
你那个是传值 那个改变值以后不算.
指针和数组都是穿地址 ~值会跟着变
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
半边桌子
2013-03-06
知道答主
回答量:32
采纳率:0%
帮助的人:18.2万
展开全部
因为a,b是临时变量,即使改了外面调用的也不会改的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
du72697921
2013-03-06 · 超过14用户采纳过TA的回答
知道答主
回答量:81
采纳率:0%
帮助的人:38.3万
展开全部
一个是在栈里的值,一个是地址。换了地址才能换过来……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hcl5201314__
2013-03-07
知道答主
回答量:18
采纳率:0%
帮助的人:7.4万
展开全部
一个很简单的算法 #define SWAPPING(a, b) {a ^=b; b ^=a; a ^= b;}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式