函数t、f的定义如下所示,其中,a是整型全局变量。设调用函数t前a的值为5,则在

考试题库2022-08-02  39

问题 函数t、f的定义如下所示,其中,a是整型全局变量。设调用函数t前a的值为5,则在函数t中以传值调用(call by value)方式调用函数f时,输出为(  );在函数t中以引用调用( call by reference)方式调用函数f时,输出为(  )。问题1选项 A.12 B.16 C.20 D.24问题2选项 A.12 B.16 C.20 D.24

选项

答案 BD

解析 传值调用中,形参取的是实参的值,形参的改变不会导致调用点所传的实参的值发生改变;而引用(传址)调用中,形参取的是实参的地址,即相当于实参存储单元的地址引用,因此其值的改变同时就改变了实参的值。本题中a是全局变量,因此会随着操作发生值的改变。
在本题中,首先是采用传值调用,这个时候将变量a的值5传递给形参r,即r的值为5,那么a的值经过a=r+1后变成了6(r的值不变),而r的值经过r=r*2后变成了10,并返回,即在函数t中,变量x的值被赋值为10,那么在函数t中最后输出的时10+6=16。
采用引用调用时,由于形参r指向的是实参a的存储空间,即r与a指向的是同一块存储单元,首先a的值为5,经过a=r+1后变成了6(r的值变为6),再经过r=r*2后变成了12,并返回,即在函数t中,变量x的值被赋值为12,那么在函数t中最后输出的时12+12=24。
转载请注明原文地址:https://tihaiku.com/congyezige/2409961.html

最新回复(0)