函数t()、f()的定义如下所示,若调用函数t时传递给x的值为5,并且调用函数f()时,第一个参数采用传值(call by value)方式,第二,个参数采用传引用(call bv reference)方式,则函数t的返回值为_________。

admin2021-01-13  28

问题 函数t()、f()的定义如下所示,若调用函数t时传递给x的值为5,并且调用函数f()时,第一个参数采用传值(call by value)方式,第二,个参数采用传引用(call bv reference)方式,则函数t的返回值为_________。

选项 A、33
B、22
C、11
D、负数

答案A

解析 本题考查程序语言基础知识。
    若函数调用时采用传值方式,则是将实参的值传给形参,再执行被调用的函数,对形参的修改不影响实参。若采用传引用方式,则是将实参的地址传递给形参,本质上是通过间接访问的方式修改实参,也可以简化理解为:在被调用函数中对形参的修改等同于是对实参进行修改。
    当函数t和f运行时,其每个形参和局部变量都有各自的存储单元,下面图中矩形框表示存储单元。
    如题中所述,调用t时传递给其形参x的值为5。因此函数t被调用而执行时,在执行函数调用f(x,a)之前,其形参x和局部变量a的值如下图(a)所示。
    执行函数调用f(x,a)时,t中x的值传给f的形参r、a的地址传给f的形参s,如下图(b)所示。

    在f执行时,其局部变量x的值由运算“x=2*s+1”改为33,其中运算时可理解为s提供了t的局部变量a的值(是由间接访问机制实现的)。接下来的运算为“s=x+r”,也就是将x的值(即33)与r的值(即5)相加得到38,然后(通过间接访问)存入t的局部变量a,结果如下图(c)、(d)所示。之后运算“r=x-1”将r的值改为32,结果如下图(e)所示。

  当函数f运行结束并返回函数t后,函数f的运行空间将由系统撤销,接下来运算 “a-x”产生的值为33(即38-5),因此函数t的返回值为33。
转载请注明原文地址:https://kaotiyun.com/show/oCCZ777K
0

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