【正确答案】
C
【答案解析】[解析] 本题主要考查函数调用时的参数传递方式。
当用户调用一个过程时,就会发生通过参数传递信息的过程之间的通信。形式参数就是过程定义中用于命名所传递的数据或其他信息的标志符,而实在参数是在调用点表示向被调用过程传递的数据或其他信息的表达式。在大多数的语言中,形式参数和实在参数之间的对应关系通常按位置来确定。程序语言传递参数的方式通常有传值调用、引用调用和传值.结果调用。
(1)传值调用。在传值调用时,过程的形式参数取得的是实在参数的值。在这种情况下,形式参数实际上是过程中的局部量,其值的改变不会导致调用点所传送的实在参数的值发生改变,也就是说数据的传送是单向的,只往下传,不能回传结果。在C语言中只有按值调用的过程参数传递方式。
(2)引用调用。在引用调用时,过程的形式参数取到的是实在参数所在单元的地址。在过程中,对该形式参数的引用相当于对实在参数所在的存储单元的地址引用。任何改变形式参数值的操作会反映在该存储单元中,也就是反映在实在参数中,因此数据的传送是双向的。C++语言既支持按值调用,也支持按引用调用。
(3)传值-结果调用。传值-结果调用也称为拷入拷出,因为初始时实在参数值被拷贝给形式参数,而在过程调用结束时再把形式参数值拷回给实在参数。
在函数调用时,不管是传值调用,还是引用调用,其形参和实参都不能是任意形式的表达式。