一道c语言题目求解,谢谢?

#include<stdio.h>voidswap(intx,int*y){intt;t=x;x=*y;*y=t;}intmain(){inta=5,b=10;swap(... #include<stdio.h>
void swap(int x,int *y)
{int t;
t=x;
x=*y;
*y=t;
}
int main()
{
int a=5,b=10;
swap(a,&b);
printf("%d %d",a,b);
return 0;
}
输出为5 5,为什么不是10 5
展开
 我来答
一剑出血
高粉答主

2019-12-19 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.6亿
展开全部
读swap()子程序,可知此程序的功能是将输入的两个参数对调,但只修改后一个参数对应的实际内容。
因此swap(a, &b);的实际功能相当于 b=a;
因此最后a、b的值都是5。
这道题考察你对函数形参以及局部变量的认识。
jeepfly2001
2019-12-19 · TA获得超过1492个赞
知道小有建树答主
回答量:1609
采纳率:71%
帮助的人:634万
展开全部
由于函数参数x变化无法影响实参,所以a的值是不变。要交换数值,要在所有x前加*符号。
swap(a,&b)改为swap(&a,&b)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帅博博的日常
2019-12-19 · TA获得超过2274个赞
知道小有建树答主
回答量:1.2万
采纳率:38%
帮助的人:387万
展开全部
这道c语言的题目,我建议你直接用Microsoft be语言来进行解释,他又在语言的话就可能过于复杂了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shandian888999
2019-12-19 · TA获得超过289个赞
知道小有建树答主
回答量:392
采纳率:86%
帮助的人:60.1万
展开全部
因为x是传值,不是传地址,所以swap操作之后,a的值不会被改变,而b的值会被改变成a的值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式