参数传递方法

时间:2013-04-20 21:46:49

标签: dynamic language-agnostic static parameter-passing

我需要在考试前弄清楚一些事情。你能帮我解答一下这个问题吗?如果我错了,我想解决它并学习真正的答案。

谢谢!!!

int x = 1; 
int foo (int a) { return a + bar (x) + x; } 
int bar (int b) { b++; return b * x; } 
int main () { int x = 2; foo(x);  }

以下情况的输出是什么:

a)静态范围和按值传递。

5 :: foo-> 2 * bar(x)+ x-> 2 + [2(b)* 1(全局x)] + 1(全局x)

b)静态范围以参考方式传递。

8 :: foo-> 2 * bar(x)+ x-> 2 + [2(b)* 2(全局x改变)] + 2(全局x改变)

c)静态范围按值 - 结果传递。

8 :: foo-> 2 * bar(x)+ x-> 2 + [2(b)* 2(全局x改变)] + 2(全局x改变)

d)动态范围和按值传递。

10 :: foo-> 2 * bar(x)+ x-> 2 + [3(b是主要的x,是2,我们加1)* 2(来自主要的foo x)] + 2(来自主要的foo x)

e)动态范围并通过引用传递。

15 :: foo-> 2 * bar(x)+ x-> 2 + [3(b是来自main的x,我们加1)* 3(来自main的foo x,因为它也被b别名增加)] + 3(来自main的foo x)

0 个答案:

没有答案