函数t、f的定义如下所示,其中,a是整型全局变量。设调用函数t前a的值为5,则在函数t中以传值调用(callbyvalue)方式调用函数f时,输出为(49);在函数t中以引用调用(callbyreference)方式调用函数f时,输出为(50)。 (50

admin2019-07-12  24

问题 函数t、f的定义如下所示,其中,a是整型全局变量。设调用函数t前a的值为5,则在函数t中以传值调用(callbyvalue)方式调用函数f时,输出为(49);在函数t中以引用调用(callbyreference)方式调用函数f时,输出为(50)。
(50)

选项 A、12
B、16
C、20
D、24

答案D

解析 本题考查函数调用时参数传递基础知识。
   发生函数调用时,调用函数与被调用函数之间交换信息的主要方法有传值调用和引用调用两种。
   若实现函数调用时实参向形式参数传递相应类型的值,则称为是传值调用。这种方式下形式参数不能向实际参数传递信息。
   在C语言中,要实现被调用函数对实际参数的修改,必须用指针作形参。即调用时需要先对实参进行取地址运算,然后将实参的地址传递给指针形参。本质上仍属于传值调用。
   引用是C++中增加的数据类型,当形式参数为引用类型时,函数中对形参的访问和修改本质上就是针对相应实际参数变量所作的访问和改变。
   本题中,传值调用方式下,表达式“x=f(a)”中调用f时,是将a的值(即5)传给r,这样执行函数f时,r的初始值为5,经过“a=r+1”运算后,全局变量a的值从5变为6,然后“r= r*2”将r的值改变为10,“return r”将10返回并赋值给x,因此执行“print a+x”后输出了16。
   传值调用方式下,表达式“x=f(a)”中调用f时,r则是a的引用(即r是a的别名),因此,经过“a=r+1”运算后,a的值(也就是r的值)变为6,然后“r=r*2”将r的值(也就是a的值)改变为12,“return r”使得将12返回并赋值给x,因此执行“print a+x”后输出了24。
转载请注明原文地址:https://kaotiyun.com/show/U2CZ777K
0

相关试题推荐
最新回复(0)