已知函数f132、f232定义如下图所示。设调用函数f1时传递给形参x值是1,若函数调用f2(a)采用引用调用(call by reference)方式传递信息,则函数f1返回值为( );若函数调用f2(a)以值调用(call by value)方式传递信息,则函数f1返回值为(请作答此空)。

本题考查程序语言基础知识。
函数f1被调用而运行时,其局部变量值变化情况如下:在调用f2(a)之前,x值为1,a值为5。在以引用调用方式调用f2(a)时,形参x是实参a引用,在函数f2中x就是函数f1中a别名(或者说此时x与a所对应存储单元是同一个,只是角度不同而已),因此执行函数f2时,条件表达式x>1即等同于a>1,a值是5所以该条件表达式成立,从而执行了"x=x*x",就将x所对应存储单元内容改为了25,然后结束f2执行并将所返回-10赋值给f1中x,因此在f1结束时返回值为a+x=25-10=15。
在值调用方式下调用f2(a)时,是将实参a值5传递给f2形参x,a和x所对应存储单元是不同,此后执行f2时,由于x值是5,所以条件表达式x>1即等同于5>1,是成立,从而执行了"x=x*x",此时是将f2中x修改为25,与f1中a和x都无关,在结束f2执行并将返回值-10赋值给f1中x后,f1结束时进行计算为a+x=5-10=-5。









