在下面的程序代码中,a是全局变量。若以引用调用(call by reference)方式调用函数
f,则输出结果为{{U}} (1) {{/U}};若以值调用(call by value)方式调用函数f,输出结果为{{U}} (2)
{{/U}}。
单选题
(1)
【正确答案】
D
【答案解析】
单选题
(2)
【正确答案】
B
【答案解析】[解析] 传值调用是指将实际参数的值传递给形式参数,实际参数与形式参数对应的存储单元是相互独立的,实际参数仅为形式参数提供初始值,在被调用函数中对形式参数的修改与实际参数没有关系。题目中,实际参数a的值为5,传值调用时将5传递给形式参数x,a是全局变量,所以函数f中对a和x的引用是两个对象,如图6-4所示,函数的返回值为36。
引用调用时形式参数和实际参数对应的存储单元都是实参的单元,因此函数中对a和x的引用是同一个对象,如图6-5所示,函数的返回值为64。
![]()
单选题
(1)
【正确答案】
D
【答案解析】
单选题
(2)
【正确答案】
C
【答案解析】[解析] 调用函数f时传递给形参a的值为1,若采用传值的方式调用g(c),那么,因为c=a+1,所以,局部变量c的初始值为2。执行g(c)调用时,在g(c)函数中,只是更改了x和b的值,不会影响c值,所以,return a+c,会返回3。第1个空的正确答案为选项D。
如果采用引用调用,那么,对b进行运算时,实际上也同时对c作了修改。所以,在g()函数中,x变量的结果为2*2=4,b=x/2+b=4/2+2=4。在此函数调用结束后,c值为4,所以,在f()函数中,return a+c的结果就是5。综上所述,第2空的正确答案为选项C。
|