己知函数 f1()、f2()的定义如下图所示 设调用函数 f1时传递给形参 x

题库2022-08-02  46

问题 己知函数 f1()、f2()的定义如下图所示  设调用函数 f1时传递给形参 x 的值是1,若 函数调用f2(a)时采用引用调用 (call by reference )的方式传递信息,则函数f1的返回值为(  );若函数调用f2(a)以值调用 (call by value)  的方式传递信息,则函数f1的返回值为(  )。A.-5B.6C.12D.15

选项 A.-5
B.6
C.12
D.15

答案 A

解析 本题考查程序语言基础知识。
函数 f1被调用而运行时,其局部变量值的变化情况如下:在调用口f2(a)之前,x 的值 为1,a的值为 5。在以引用调用方式调用f2(a)时,形参 x 是实参 a 的引用,在函数 f2中的 x 就是函数f1 中 a 的别名(或者说此时 x与 a 所对应的存储单元是同一个,只是角度不同而己),因此执行函数f2时,条件表达式 x>1 即等同于a>1, a 的值是 5 所以该条件表达式成立,从而执行了 "x = x*x",就将x 所对应存储单元的内容改为了 25 ,然后结束f2的执行并将所返回的-10  赋值给 f1 中的 x ,因此在f1结束时返回的值为a+x=25-10=15。
在值调用方式下调用f2(a)时,是将实参 a 的值 5 传递给f2的形参 x ,a 和 x 所对应 的存储单元是不同的,此后执行f2时,由于 x 的值是 5,所以条件表达式x>1 即等同于 5>1 ,是成立的,从而执行了"x = x*x",此时是将f2中的x 修改为 25 ,与f1中的 a 和 x 都无关,在结束f2的执行并将返回值-10 赋值给 f1中的 x 后,f1结束时进行的计算为a+x=5-10=-5.
转载请注明原文地址:https://www.tihaiku.com/congyezige/2426816.html

最新回复(0)