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