使用引用调用时被调用者和调用者的值

问题描述 投票:0回答:1

我遇到了一个混乱,当我通过引用将变量x传递给变量y时,x和y现在应该指向相同的位置,但是我得到的输出不相同。

详细讨论在这里:http://gateoverflow.in/94182/programming-output我尽力向用户解释这些东西,但我仍然无法让他充分信服,也许我缺乏一些概念。

粗略代码示例:

var b : int;
procedure M (var a, int)
begin
a= a*a;
print(a);
end;
procedure N
begin
b= b+1;
M(b);
end;
begin
b=12;
N;
print(b);
end;

enter image description here

我假设有问题的是变量是静态的,所以ab的值不应该从13变化,但是a的值应该是13 * 13 = 169,但是我的推理与参考调用的内容相反。 。

来自未授权书籍的pascal代码,请提出一些见解。

scope reference lexical-scope
1个回答
0
投票

我不得不审查范围界定术语。我自己在静态和动态范围之间感到困惑。静态作用域用于所有现代编程语言。我得出结论,a和b在相应的打印语句中的值应为169。

© www.soinside.com 2019 - 2024. All rights reserved.