一道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 展开
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 展开
4个回答
展开全部
由于函数参数x变化无法影响实参,所以a的值是不变。要交换数值,要在所有x前加*符号。
swap(a,&b)改为swap(&a,&b)
swap(a,&b)改为swap(&a,&b)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这道c语言的题目,我建议你直接用Microsoft be语言来进行解释,他又在语言的话就可能过于复杂了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为x是传值,不是传地址,所以swap操作之后,a的值不会被改变,而b的值会被改变成a的值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询