6.以下程序的输出结果是( ) # include subl(char a,char b) {char c;c=a;a=b;b=c;} sub2(char *a,char b){ char c;c=*a;*a=b;b=c;} sub3(char *a,char *b) { char c;c=*a;*a=*b;*b=c;} main() { char a, b; a=’A’; b=’B’; sub3(&a,&b); putchar(a); putchar(b); a=’A’;b=’B’ ;Sub2(&a,b);putchar(a); rutchar(b); a=’A’; b=’B’; sub1(a,b); putchar(a);putchar(b); } ①BABBAB ②ABBBBA ③ BABABA ④ BAABBA 【解】在上述程序中,函数subl完成两形参值的交换,这个交换不影响实参变量,这是一个没有意义的函数。函数sub2将第二个形参的值置入由第一个指针形参所指的变量中,指针形参所指的变量由调用时的实参提供。函数sub3完成将两个形参所指的变量的值交换。程序调用sub3,使变量a和b的值交换输出BA;调用subZ,使变量b的值传送到a,输出BB;调用subl,变量a和b的值不改变,输出AB。所以程序输出BABBAB。正确解答是①。 |