已知函数f1()、f2()的定义如下图所示。设调用函数n时传递给形参x的值是1,若函数调用f2(a)采用引用调用(callbyreference)的方式传递信息,则函数f1的返回值为(32);若函数调用f2(a)以值调用(callbyvalue)的方式传递

admin2019-05-11  21

问题 已知函数f1()、f2()的定义如下图所示。设调用函数n时传递给形参x的值是1,若函数调用f2(a)采用引用调用(callbyreference)的方式传递信息,则函数f1的返回值为(32);若函数调用f2(a)以值调用(callbyvalue)的方式传递信息,则函数f1的返回值为(33)。

(33)

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

答案A

解析 本题考查程序语言基础知识。函数n被调用而运行时,其局部变量值的变化情况如下:在调用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>l即等同于5>1,是成立的,从而执行了“x=x*x”,此时是将f2中的x修改为25,与f1中的a和x都无关,在结束f2的执行并将返回值-10赋值给f1中的x后,f1结束时进行的计算为a+x=5=10=5。
转载请注明原文地址:https://jikaoti.com/ti/klL7FFFM
0

随机试题
最新回复(0)