下列程序段的输出结果是 ( )
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
稍微写下过程,谢谢 展开
{
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
稍微写下过程,谢谢 展开
1个回答
展开全部
答案选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。(注意形参和值参的顺序)
过程如下:
第一次调用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。(注意形参和值参的顺序)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询