问题 单项选择题

下列程序输出的结果是( )。
#include<stdio.h>
un1(char a,char b)char c;c=a;a=b;b=c;
fun2(char*a,char b)char c;c=*a;*a=b;b=c;
fun3(char*2,char*b)charc;c=*a;*a=*b;*b=c;
void main()

char a,b;
a=’A’;b=’B’;funl(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

解析: 由程序中的主函数main入手,分别调用funl,fun2,fun3函数,得出输出结果。其中,3个函数都是实现的两个形参的交换功能,只是值传递的方式不同,有的是引用,有的是传值。第一个函数中参数采用的是值传递的方式,形参的变化不影响实参。所以d调用funl后,实参a和b并没有交换,仍然是AB。第二个调用中,实参a采用的是地址,印传递的是地址,所以形参a的改变合影响实参a的值,即BB。同理,调用fun3后为BA。

多项选择题
单项选择题