运行下列程序后,输出结果是()void fun (int *x,int *y){printf("%d,%d,",*x,*y);*

运行下列程序后,输出结果是()
void fun (int *x,int *y)
{printf("%d,%d,",*x,*y);*x=1 , *y=3;}
main()
{int x=1,y=2;
fun(&y,&x);printf("%d,%d",x,y);
}


A、

1,2,3,3


B、

1,2,3,2


C、

2,1,1,3


D、

2,3,1,2


【正确答案】:C
【题目解析】:

main( )函数,然后声明了变量x=1, y=2; 下一步fun(&y, &x);程序就会跳转到fun这个函数中去,fun函数中y的地址传递给x,把x的地址传递给y,此时 x=2,y=1; 所以fun函数中输出2,1;然后*y=3,*x=1;给x,y赋值,但是fun(&y, &x);是把y的地址传递给x,把x的地址传递给y),所以运行到*x=3;*y=1;时其实主函数main中的x=1,y=3的,然后回到main函数中,输出的就是1,3。