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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用引用调用时被调用者和调用者的值相关的知识,希望对你有一定的参考价值。

我遇到了一个混乱,当我通过引用将变量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代码,请提出一些见解。

答案

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

以上是关于使用引用调用时被调用者和调用者的值的主要内容,如果未能解决你的问题,请参考以下文章

如何将右值引用从调用者传递给被调用者

C#知识点整理

GNU gcc/ld - 使用在同一个目标文件中定义的调用者和被调用者包装对符号的调用

被调用者分配被调用者释放

rdi 和 rsi 调用者保存还是被调用者保存的寄存器?

关于同步,异步,阻塞,非阻塞