2013-06-02 40 views
0

我想知道传递参数的方法究竟是什么。他们做什么,他们有什么区别...我有以下子程序:了解编程语言中的参数传递问题

subprogram p(x) 
    a[1] = 6; 
    element = 2; 
    x = x + 3; 
end 

a是一个数组,它只有两个元素。

a[1] = 1 
a[2] = 2 
element = 1 

我们所说的子程序如下:

p(a[element]) 

那么会是什么结果,如果子程序使用“按值传递”,“通过结果”,“按值-结果传递” ,“按引用传递”或“按名称传递”的方法。

我真的很困惑。提前致谢。

+0

什么语言是它? – pbibergal

+0

它不管它是什么语言。有时候你会使用价值传递,有时候通过引用。有什么区别我问 – user2870

+0

通过名称取决于是否调用名称通过值,引用或值 - 结果进行调用。在这种情况下,如果调用名称给出引用,它会将'a [2]'更改为5,但按值调用只会给函数赋予'a [2]',但不会更改'a [2 ]本身。 –

回答

0

该语言影响变量的范围,以及它们在调用函数或定义函数时如何绑定变量。然而,假定静态的,词汇范围规则适用是可能的。

传递值:仅更改显式命名的变量。

a[1] = 6 
a[2] = 2 
element = 2 

引用传递:将明确命名变量和东西传入

a[1] = 9 
a[2] = 2 
element = 2 

路过结果:将明确命名变量和东西传入

a[1] = 9 
a[2] = 2 
element = 2 

值传递 - 结果:明确地更改命名变量和传入的东西。

a[1] = 9 
a[2] = 2 
element = 2 

路过名字:修改明确命名变量和东西传入

a[1] = 6 
a[2] = 5 
element = 2 
+0

“假定动态的,词法范围规则”这到底是什么?动态范围确定与词汇范围界定相反。 – newacct

+0

你是对的 - 我开始了这个句子,并在中途改变了主意。我会改变它。 –

+0

你的答案不正确。 – user2870