函数f()、g()的定义如下所示,已知调用f时传递给形参x的值是1。在函数f中,若以引用训用(call by reference)的方式调用g,则函数f的返回值为(1);若以值调用(call by value)的方式调用g,则函数f的返回值为(2)。
2()
A.10
B.10
C.20
D.30
参考答案:C
解析:
若实现函数调用时实参向形式参数传递相应类型的值(副本),则称为是传值调用(call by value)。传值调用的参数传递和被调用函数内对参数的使用主要按下述原则:函数定义时形参被当作局部变量看待,在函数被调用时为形参分配存储单元;调用函数前,首先计算实参的值,调用时将实参的值放入形参的存储单元;被调用函数内部对形参单元中的数据进行直接访问。
引用是C++中增加的数据类型,当形式参数为引用类型时,形参名实际上是实参的别名,函数中对形参的访问和修改实际上就是针对相应实际参数所做的访问和改变。引用调用的参数传递和被调用函数内对参数的使用主要按下述原则处理:函数定义时形参被当作局部变量看待,在函数被调用时为形参分配存储单元;调用时将实参的地址放入形参的存储单元;被渊用函数内部对形参单元中的数据(地址)进行间接访问。
若以引用调用的方式调用g,a=10,x=g(a)=20,因此函数f的返回值为30;
若以值调用的方式渊用g,a=0,x=g(a)=20,因此函数f的返回值为20。