程序员考试中的一道题

来源:百度知道 编辑:UC知道 时间:2024/05/16 01:19:20
在下面的程序中,若实参a与形参x以引用调用(call by reference)的方式传递信息,则输出结果为__(11)__;若实参a与形参x以值调用(callbyvalue)的方式传递信息,那么输出结果为__(12)__。

Mainprogram a:=1;
addone(a);
write(a);

Procedure addom(x) a:=x+1;
x:=x+2;
return;

(11)A.1 B.2 C.3 D.4
(12)A.1 B.2 C.3 D.4

答案分别是D B 谁能给我解释一下。我对传值和传址不明白。
下面着到题也是有关这个知识点的,要是可以也帮个忙。谢谢。

在下面的程序中,若调用f1(x)时,参数传递采用传值方式,调用f2(y)时,参数传递采用引用方式,则输出结果为_(47)_;若调用f1(x)时,参数传递采用引用方式,调用f2(y)时,参数传递采用传值方式,则输出结果为_(48)_。
main() procedure f1(x) procedure f2(y)
int a=2; f2(x); y=y*y;
f1(a); x=x+x; return;
write(a); return;
(47)A.2 B.4 C.6 D.8
(48)A.2 B.4 C.6 D.8
答案是 A B

是什么语言我不懂,不过
传值调用是指把实在参数的地址传递给相应的形式参数,子程序通过这种传值形参可传回结果的值和存放结果的地址;引用调用是指把实在参数的名传递给相应的形式参数,此时子程序对形式参数的一次引用或赋值被处理成对形式参数的间接访问。
第一个题目中,
引用调用:
a=1,addone(a)时候,实参a=1,看Procedure addom(x)
此时候,x=1,然后在addone函数中,
a:=x+1 此时,x=1,a=2;
x:=x+2 此时,x=4,return后,a=4
值调用:x=1,在addone函数中,
a:=x+1 此时,x=1,a=2;
return后,a=2