单选题 函数t、f的定义如下所示,其中,a是整型全局变量。设调用函数t前a的值为5,则在函数t中以传值调用(call by vahle)方式调用函数f时,输出为______;在函数t中以引用调用(call by reference)方式调用函数f时,输出为______。
【正确答案】 B
【答案解析】
【正确答案】 D
【答案解析】传值调用中,形参取的是实参的值,形参的改变不会导致调用点所传的实参的值发生改变;而引用(传址)调用中,形参取的是实参的地址,即相当于实参存储单元的地址引用,因此改变其值同时就改变了实参的值。
在本题中,首先是采用传值调用,这个时候将变量a的值5传递给形参r,即r的值为5,那么a的值经过a=r+1后变成了6,而r的值经过r=r*2后变成了10,并返回,即在函数t中,变量x的值被赋值为10,那么在函数t中最后输出的是10+6=16。
采用引用调用时,由于形参r指向的是实参a的存储空间,即r与a指向的是同一块存储单元,首先a的值为5,经过a=r+1后变成了6,再经过r=r*2后变成了12,并返回,即在函数t中,变量x的值被赋值为12,那么在函数t中最后输出的是12+12=24。