问题 单项选择题

试题(32)、(33) 已知函数f1()、f2()的定义如下所示,设调用函数f1时传递给形参x的值是10,若函数调用f2(a)以引用调用(call by reference)的方式传递信息,则函数f1的返回值为():若函数调用f2(a)以值调用(call by value)的方式传递信息,则函数f1的返回值为()。

若函数调用f2(a)以值调用(call by value)的方式传递信息,则函数f1的返回值为()。

A.10

B.20

C.59

D.98

答案

参考答案:B

解析:

试题(32)、(33)分析 本题考查程序语言基础知识。 以值调用方式进行参数传递时,需要先计算出实参的值并传递给对应的形参,然后执行所调用的过程(或函数),在过程(或函数)执行时对形参的修改不影响实参的值。对于引用调用,调用时首先计算实参的地址,并将此地址传递给被调用的过程,因此被调用的函数既得到了实参的值又得到了实参的地址,然后执行被调用的过程(或函数)。在过程(或函数)的执行过程中,针对形参的修改结果将反映在对应的实参变量中。 题目中,若f2(a)采用引用调用方式,则在f2中对y的访问本质上是对f1中a的访问,因此经过运算“y=5*y-1”后,y的值为49,即f1中a的值为49,x的值是10,因此函数f1的返回值为59。若f2(a)采用值调用方式,则f2中对y的访问与f1中的a无关,f2(a)调用完成后,在f1中a和x的值保持不变(都为10),因此函数f1的返回值为20。

选择题
单项选择题