下列程序段的输出结果是 ( )

voidfun(int*x,int*y){printf(“%d%d”,*x,*y);*x=3;*y=4;}main(){intx=1,y=2;fun(&y,&x);pri... 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);
}
A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2

稍微写下过程,谢谢
展开
 我来答
本无才
2012-07-03 · TA获得超过350个赞
知道小有建树答主
回答量:233
采纳率:50%
帮助的人:139万
展开全部
答案选A
过程如下:
第一次调用fun,此时,x=1,y=2,所以fun(&y,&x)所接收到的参数实际是主程序中变量X和Y的地址,所以执行到fun函数体中的printf(“%d %d”, *x, *y); 时输出的是2和1。接着*x=3; *y=4;的意思是将参数X所指向的地址的值赋为3,将参数Y所指向的地址的值赋为4,由于参数所传递的是地址,即形参所指向的是主程序中变量XY的地址,所以在fun中的*x=3; *y=4;已将主程序中的值改变。所以当执行完fun后,回到主程序中时,printf(“%d%d”,x, y);时输出是4和3。(注意形参和值参的顺序)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式