已知函数f1()、f2()的定义如下图所示,如果调用函数f1时传递给形参x的值是2,若a和y以引用调用(call by reference)的方式传递信息,则函数f1的返回值为(47);若a和y以值调用(call by value)的方式传递信息,则函数f

admin2019-05-11  33

问题 已知函数f1()、f2()的定义如下图所示,如果调用函数f1时传递给形参x的值是2,若a和y以引用调用(call by reference)的方式传递信息,则函数f1的返回值为(47);若a和y以值调用(call by value)的方式传递信息,则函数f1的返回值为(48)。

选项 A、6
B、10
C、14
D、随机数

答案C

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

随机试题
最新回复(0)