函数f()、g()的定义如下所示,调用函数f时传递给形参x的值为5,若采用传值(call by value)方式调用g(a),则函数f的返回值为(1);若采用传引用(call by reference)方式调用g(a),则函数f的返回值为(2)。

admin2019-03-11  27

问题 函数f()、g()的定义如下所示,调用函数f时传递给形参x的值为5,若采用传值(call by value)方式调用g(a),则函数f的返回值为(1);若采用传引用(call by reference)方式调用g(a),则函数f的返回值为(2)。


选项 A、15
B、18
C、22
D、24

答案C

解析 在传值调用方式中,被调用函数的形参得到实参值的一份拷贝,在被调用函数内修改形参不影响实参。而在传引用调用方式中,被调用函数得到的是实参本身(地址和值),在被调用函数中修改其形参其实就是修改实参本身,因此会影响实参的值。调用函数f时传递给形参x的值为5,若采用传值方式调用g(a),对实参a不产生任何影响,在执行完“int a=2*x-1”之后,a的值为9,执行 “g(a);”之后,a的值仍为9,所以函数f的返回值为9+5=14。若采用传引用方式调用g(a),则“int a=2*x-1”执行完之后,a的值为9,然后控制转入到g(int y)中,在g(int y)中对y的修改其实就是修改a。在g(int y)中传递过来的形参值为9,执行“x=y-1”之后,x的值为8,接着执行“y=x+y”之后,y的值就变为17,反映到实参a中就使得f(int x)中的a也为17,因此,这种情况下,函数f的返回值为17+5=22。
转载请注明原文地址:https://jikaoti.com/ti/gQf7FFFM
0

最新回复(0)