阅读下面程序: #include<iostream.h> void fun1(char a,char b) { char c; c=a;a=b;b=c; } void fun2(char&a,char&b)

admin2013-02-27  22

问题 阅读下面程序:
   #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。
转载请注明原文地址:https://jikaoti.com/ti/g4L0FFFM
0

最新回复(0)