刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

单选题

已知函数f()、g()的定义如下所示,执行表达式"x=f(5)"的运算时,若函数调用g(a)是引用调用(call by reference)方式,则执行"x=f(5)"后x的值为(请作答此空 );若函数调用g(a)是值调用(call by value)方式,则执行"x=f(5)"后x的值为 ()。

A
20
B
25
C
60
D
75
使用微信搜索喵呜刷题,轻松应对考试!

答案:

D

解析:

本题考查程序语言基础知识。

已知函数f和g的定义,需要分析在引用调用和值调用两种方式下,执行表达式"x=f(5)"后x的值。

在引用调用方式下:

  • 调用函数f时,实参的值为5,即函数f中x的初始值为5。
  • 执行"a=x-1",此时a的值为4。
  • 调用函数g(a)时,由于引用调用,函数g中的形参y与函数f中的实参a指向同一对象。
  • 在函数g中执行"y=y*y-1",此时y的值变为15(因为初始y值为4)。
  • 由于引用调用,函数f中的实参a的值也被改变为15。
  • 返回函数f,执行"a*x",此时a的值为15,x的值为5,结果为75。

在值调用方式下:

  • 调用函数f时,实参的值为5,即函数f中x的初始值为5。
  • 执行"a=x-1",此时a的值为4。
  • 调用函数g(a)时,由于值调用,函数g中的形参y只是获得函数f中a的值的一个副本。
  • 在函数g中执行"y=y*y-1",此时y的值变为15,但这个改变不会影响函数f中的a的值。
  • 返回函数f,执行"a*x",此时a的值为原始的4,x的值为5,结果为20。

因此,如果函数调用g(a)是引用调用方式,执行"x=f(5)"后x的值为75;如果函数调用g(a)是值调用方式,执行"x=f(5)"后x的值为20。

创作类型:
原创

本文链接:已知函数f()、g()的定义如下所示,执行表达式"x=f(5)"的运算时,若函数调用g(a)是引用调

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share