下列程序段的输出结果是:( ). void fun( int *x, int *y) { printf("%d %d",*x,*y);*x=3;*y=4;} main( )

main(){intx=1,y=2;fun(&y,&x);printf("%d%d",x,y);}A、2112B、1234C、2143D、1212... main( )
{ int x=1, y=2;
fun(&y, &x);
printf("%d %d", x, y);
}
A、2 1 1 2
B、1 2 3 4
C、2 1 4 3
D、1 2 1 2
展开
 我来答
程序员殷保华
2012-12-13 · 专注于互联网、编程技术讨论交流。
程序员殷保华
采纳数:246 获赞数:7107

向TA提问 私信TA
展开全部
fun(&y, &x);函数内容是什么啊?
原题是不是:

下列程序段的输出结果是:( ).
void fun( int *x, int *y)
{ printf("%d %d",*x,*y);*x=3;*y=4;}
main( )
{ int x=1, y=2;
fun(&y, &x);
printf("%d %d", x, y);
}
应该选择C
fun(&y, &x);把y的地址传递给x,把x的地址传递给y,即运行到printf("%d %d",*x,*y);时x=2,y=1;
然后*x=3;*y=4;给x,y赋值,但是x,y在网下传时,想,y的值是交换了的(即fun(&y, &x);把y的地址传递给x,把x的地址传递给y),所以运行到x=3;*y=4;时其实主函数中的x=4,y=3的,所以,printf("%d %d", x, y);执行的结果是x=4,y=3,所以选c
追问
小菜鸟  自学的   为什么还会有 4,3输出啊
追答
首先程序入口是:main( )函数,然后声明了变量x=1, y=2; 下一步fun(&y, &x);程序就会跳转到fun这个函数中去,fun函数中y的地址传递给x,把x的地址传递给y,此时 x=2,y=1; 所以fun函数中输出2,1.然后*x=3;*y=4;给x,y赋值,但是fun(&y, &x);是把y的地址传递给x,把x的地址传递给y),所以运行到x=3;*y=4;时其实主函数main中的x=4,y=3的,然后回到main函数中,输出的就是4,3。
好好研究一下fun函数。
void fun( int *x, int *y)
{
printf("%d %d",*x,*y);
*x=3;
*y=4;
}
叫我大哥LK
2022-04-21
知道答主
回答量:23
采纳率:0%
帮助的人:1.5万
展开全部
v考查的是参数传递,及指针应用。
fun(&y,&x); 参数为地址传送,void fun(int *x,int *y)接收的是(x=&y,y=&x) 输出是y x也就是2 1
将地址赋的值更改为*x=3,*y=4;相当于主函数的y=3,x=4.
返回主函数输出的是4 3
故最后输出结假果:2143 答案是A
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式