函数f()、g()的定义如下所示,已知调用f时传递给形参x的值是1。在函数f中,

admin2022-08-02  42

问题 函数f()、g()的定义如下所示,已知调用f时传递给形参x的值是1。在函数f中,若以引用调用(call by reference)的方式调用g,则函数f的返回值为(  );若以值调用(call by value)的方式调用g,则函数f的返回值为(  )。A.10B.11C.20D.30

选项 A.10
B.11
C.20
D.30

答案 C

解析 本题考查程序语言基础知识。
    若实现函数调用时实参向形式参数传递相应类型的值,则称为是传值调用。这种方式下形式参数不能向实参传递信息。引用调用的本质是将实参的地址传给形参,函数中对形参的访问和修改实际上就是针对相应实际参数变量所作的访问和改变。
    在函数f中,先通过“a=x-1”将a的值设置为0。函数调用g(a)执行时,在引用调用方式下,g函数体中的b就是f中a的引用,即访问b也就是访问f中的a,修改b就是修改f中的a,因此“b=b+10”将f中a的值改为了10,语句“return 2*b;”则使f中的x得到的值为20,这样,f中的语句“return a+x;”就会返回30。
    在值调用方式下,g函数体中的b与f中的a是相互独立的,它们之间唯一的联系就是函数调用g(a)执行时将a的值(即0)传给了b,因此运算“b=b+10”将b的值改为10,语句“return 2*b;”则使f中的x得到的值为20,此时a的值仍然为0,因此f中的语句“return a+x;”返回的值为20。
转载请注明原文地址:https://tihaiku.com/congyezige/2427528.html

最新回复(0)