传值与传址问题

传值与传址实例

2023年上半年软考真题:

22、设函数foo和hoo的定义如下图所示,在函数foo中调用函数hoo,hoo的第一个参数采用传引用方式(call by reference),第二个参数传值方式(call by value),那么函数foo中的print(a,b)将输出()

A.8,5
B.39,5
C.8,40
D.39,40

参考答案: B

答案与解析

试题难度:容易

  • 知识点:程序设计语言基础>传值与传址
  • 试题解析:

根据题干描述的调用过程,hoo()第个参数是引用调用个参数是传值调用,因此,在hoo()中对m的修改最终会影响到原foo()函数中传递的参数a,也就是最终a打印的值。
根据hoo()函数过程,b初始传参为原m=5,此时m=x*m=8*5=40(注意这里的m是局部变量,只在hoo()使用),x初始传参为原a=8,此时x=m-1=40-1=39,最终全局变量a值为39。(注意这里的原a是全局变量,在hoo()参数中可以理解为别名为x,现m是局部变量,也就是之前求取的5)。

举一反三: 2020年第 39 题

函数foo()、hoo0定义如下,调用函数hoo()时,第-个参数采用传值(call by value)方式,第二个参数采用传引用(call by reference)方式。设有函数调(函数foo(5),那么"print(x)”执行后输出的值为(  )。

  • (A) 24
  • (B) 25
  • (C) 30
  • (D) 36

答案与解析

  • 试题难度:容易
  • 知识点:程序设计语言基础>传值与传址
  • 试题答案:[['A']]
  • 试题解析:

根据题干描述的调用过程,hoo()第一个参数是传值调用,第二个参数是引用调用,因此,在hoo()中对a的修改最终会影响到原foo()函数中传递的参数x,也就是最终x打印的值。
根据hoo()函数过程,x初始传参为原args=5,此时x=x-1=4(注意这里的x是局部变量,只在hoo()使用),a初始传参为原x=6,此时a=a*x=6*4=24,最终全局变量x值为24。(注意这里的原x是全局变量,在hoo()参数中可以理解为别名为a,现x是局部变量,也就是之前求取的4)。

猜你喜欢

转载自blog.csdn.net/ck3345143/article/details/132236312
今日推荐