问题
填空题
阅读下面程序:
#include<iostream.h>
void fun1(char a,char b)
char c;
c=a;a=b;b=c;
void fun2(char&a,char&b)
char c;
c=a;a=b;b=c;
void main()
char a,b;
a=’x’;b=’y’;
fun1(a,b);cout<<a<<b;
a=’x’;b=’y’;
fun2(a,b);cout<<a<<b;
则该程序的输出为______。
答案
参考答案:xyyx
解析: 由程序mm主函数入手,首先调用fun1函数,输出结果.然后调用fun2函数,输出结果。在函数fun1声明中出现的参数为形参,调用结束后,形参单元被释放,实参单元仍维持原值。也就是fun1函数中的“c=a;a=b;b=c;”交换结果并不能改变主函数中a,b实参的值,“a=’x’;b=’y’;”输出为xy。函数void fun2(char&a,char&b)声明为实参的地址,所以在函数中调用交换语句后,实参值改变,即输出为yx。所以答案为xyyx。