函数f()、g()的定义如下所示,调用函数f()时传递给形参x的值为1。 若采用传引用(call by reference)的方式调用g(y),则函数f()的返回值为(49); 若采用传值(call by value)的方式调用g(y)

admin2009-02-15  32

问题 函数f()、g()的定义如下所示,调用函数f()时传递给形参x的值为1。
   
   若采用传引用(call by reference)的方式调用g(y),则函数f()的返回值为(49);
   若采用传值(call by value)的方式调用g(y),则函数f的返回值为(50)。

选项 A、7
B、6
C、5
D、3

答案D

解析 引用调用和值调用是进行过程(函数)调用时实际参数与形式参数间传递信息的两种基本方式。在过程(或函数)首部声明的参数称为形式参数,简称形参:过程(或函数)调用时的参数称为实际参数,简称实参。调用语句实现了对过程(或函数)语句的执行,调用时首先要进行实参与形参间的参数传递。简单地说,以值调用方式进行参数传递时,需要先计算出实参的值并将其传递给对应的形参,然后执行所调用的过程(或函数),在过程(或函数)执行时对形参的修改不影响实参的值。而引用调用时首先计算实际参数的地址,并将此地址传递给被调用的过程,然后执行被调用的过程(或函数)。因此在被调用的过程(函数)中,既得到了实参的值又得到了实参的地址。引用调用方式下,被调用过程(函数)执行时针对形参的修改将反映在对应的实参变量中。调用函数f()时传递给形参x的值为1,因此局部变量z的初始值为2。在传值调用方式下,执行函数 g()不会影响实参z,因此函数f()的返回值为3;在引用调用方式下,执行函数g()时,对y的修改等同于对之进行修改,因此在函数g()中,执行“a=y*y;”语句后,局部变量口的值为4;执行“y=a+y;”语句后,参数y的值修改为6,因此函数调用g(c)结束后,z的值为6,函数只)的返回值为7。
转载请注明原文地址:https://kaotiyun.com/show/6PjZ777K
0

相关试题推荐
最新回复(0)