题目详情

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

初级程序员,章节练习,基础复习,初级程序员练习

  • A.20
  • B.25
  • C.60
  • D.75

正确答案及解析

正确答案
D
解析

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

若实现函数调用时,将实参值传递给对应形参,则称为是传值调用。这种方式下形式参数不能向实参传递信息。引用调用本质是将实参地址传给形参,函数中对形参访问和修改实际上就是针对相应实际参数变量所作访问和改变。

根据题目说明,调用函数f时,实参值为5,也就是在函数f中,x初始值为5,接下来先通过"a=x-1"将a值设置为4,再调用函数g(a)。函数g()执行时,形参y初始值为4,经过"y=y*y-1"运算后,y值就修改为15。

在引用调用方式下,g函数中y是f函数中a引用(可视为形参y与实参a是同一对象),也就是说函数f中a值被改为15,因此,返回函数f中再执行"a*x"运算后得到75(x=5,a=15),因此第一空应填入值为75。

在值调用方式下,g函数中y只获得f函数中a值(形参y与实参a是两个不同对象),也就是说在函数g中修改y值与函数f中a值已经没有关系了,因此,返回函数f再执行"a*x"运算后得到20(x=5,a=4),因此空(34)应填入值为20。

你可能感兴趣的试题

单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.V(S2)和P(S4)
  • B.P(S2)和V(S4)
  • C.P(S2)和P(S4)
  • D.V(S2)和V(S4)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.V(S1)P(S2)和V(S3)
  • B.P(S1)V(S2)和V(S3)
  • C.V(S1)V(S2)和V(S3)
  • D.P(S1)P(S2)和V(S3)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S4)和V(S4)V(S5)
  • B.V(S5)和P(S4)P(S5)
  • C.V(S3)和V(S4)V(S5)
  • D.P(S3)和P(S4)V(P5)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S3)和V(S4)V(S5)
  • B.V(S3)和P(S4)P(S5)
  • C.P(S3)和P(S4)P(S5)
  • D.V(S3)和V(S4)V(S5)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S2)和P(S4)
  • B.P(S2)和V(S4)
  • C.V(S2)和P(S4)
  • D.V(S2)和V(S4)
查看答案

相关题库更多 +