【发布时间】:2017-03-27 07:16:54
【问题描述】:
当 x 和 y 按值传递以及按名称传递时,我需要找到以下代码的结果。
PROGRAM EX1;
int i; //global
int A[3]; //global
PROCEDURE P1(int x, int y)
Begin
y:=2;
PRINT(x);
i:=3;
PRINT(x);
i:=3;
PRINT(x);
PRINT(y);
End;
BEGIN //main
A[1]:=7; A[2]:=13; A[3]:=11;
i:=1;
P1(A[i],i); //first call
P1(i,A[i]); //second call
END.
如果 x 和 y 按值传递,我得出以下结论: 输出:13、11、11、3 第二个输出:1、3、3、11。 如果这是错误的,请帮助我理解原因。
从我看到的示例中,我也不确定在此代码中传递名称将如何工作。也请帮忙。
假设静态范围。
【问题讨论】:
-
你试过google一下参数传递方法的含义吗?此外,您有时不能以一种方式将参数传递给函数/过程,有时以另一种方式。函数/过程声明确定了要使用的方法。最后,如果您按值传递,一旦过程/函数完成,对它们在过程/函数中的值所做的任何更改都会丢失。
-
这只是理论上的,如果代码在运行时使用不同的参数传递会输出什么。是的,我已经用谷歌搜索并有一本关于不同传递方法的教科书,但我需要更多指导来帮助我理解。
标签: parameters parameter-passing generic-programming pass-by-value pass-by-name