0

在此示例中,我如何通过值结果模拟调用。不添加变量且不更改变量名。?

Program one;
    var
      x:integer;
    Function two():integer;
        begin
           x:=x+1;
           two:=x;
        end;
    Procedure three(x:integer);
       begin
          x:=x+5;
          x:=two();
       end;
begin
x:=8;
three(x);
write(x);
end.
4

3 回答 3

0

对二()做三()已经做的事情。

于 2010-06-13T20:37:35.960 回答
0

很难以现在的形式弄清楚这个问题。

但是,如果我们假设 OP询问如何在示例代码中模拟通过引用(而不是通过值)调用,那么这个问题似乎有道理的。

所以...实际代码按值传递参数three()three()似乎试图将值存储到全局变量中,然后再调用two()它,进而更改全局变量。

但是全局变量实际上是用来传递值的,所以诀窍是在将全局按值传递给全局之后three(),最终会发生变化,就好像它是按引用传递一样。

只有一个小问题(这似乎构成了整个问题):three()由于参数名称与全局名称相同,如何从内部解决全局问题?

我不知道应该使用哪个版本的 Pascal 来运行此代码,但是如果编译器与 TP/Delphi 系列兼容并且必须保持 var 名称不变,那么我会尝试目前我知道的唯一方法: one.x. 具体来说,这行 inthree()的实现

x:=x+5;

我会改为

one.x:=x+5;

所以,这里的全局接收到增加5的参数值并调用two(),并two()再次更改全局。

于 2011-01-14T08:56:01.003 回答
0

如果是家庭作业,我认为您不必费力地寻找答案。

编辑:下面的评论是正确的——也许我把你带错了路——最好回到我们所在的地方并从那里开始。

于 2010-06-11T22:41:13.347 回答