A-A+
下列程序输出的结果是()。 #include funl(chara cha
问题详情
下列程序输出的结果是()。 #include<stdi0.h> funl(chara,charb){charC;c=a;a=b;b=C;) fun2(char*a,charb){charC;c=*a;*a=b;b=c;) fun3(char*a,char*b){charC;C=*a;*a=*b;*b=C;) voidmain() { chara,b; a=A;b=B;fun1(a,b);putchar(a);putchar(b); a=A;b=B;fun2(&a,b);putchar(a);putchar(b); a=A;b=B;fun3(&a,&b);putchar(a);putchar(b); putchar(\n); }
A.BABBAB
B.ABBBBA
C.ABBABA
D.ABABBA请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:B
B。【解析】由程序中的主函数main入手,分别调用fun1,fun2,fun3函数,得出输出结果。其中,3个函数都是实现的两个形参的交换功能,只是值传递的方式不同,有的是引用,有的是传值。第一个函数中参数采用的是值传递的方式,形参的变化不影响实参。所以d调用funl后,实参a和b并没有交换,仍然是AB。第二个调用中,实参a采用的是地址,即传递的是地址,所以形参a的改变会影响实参a的值,即BB。同理,调用fun3后为BA。