gpt4 book ai didi

pass-by-reference - 按引用、值和名称调用

转载 作者:行者123 更新时间:2023-12-04 07:24:34 24 4
gpt4 key购买 nike

我试图了解按引用、值和名称调用之间的概念差异。

所以我有以下伪代码:

foo(a, b, c)
{
b =b++;
a = a++;
c = a + b*10
}

X=1;
Y=2;
Z=3;
foo(X, Y+2, Z);

如果 a、b 和 c 都是通过引用调用,那么在 foo 调用之后的 X、Y 和 Z 是什么?
如果 a、b 和 c 是按值/结果调用?
如果 a、b 和 c 是按名称调用?

另一个场景:
X=1;
Y=2;
Z=3;
foo(X, Y+2, X);

我正在努力为即将到来的期末考试抢先一步,这似乎是一个很好的复习题。 Pass-by-name 对我来说绝对是最陌生的。

最佳答案

当您按值传递参数时,它只是复制函数参数中的值,并且在函数中对该变量所做的任何操作都不会反射(reflect)原始变量,例如

foo(a, b, c)
{
b =b++;
a = a++;
c = a + b*10
}

X=1;
Y=2;
Z=3;
foo(X, Y+2, Z);
//printing will print the unchanged values because variables were sent by value so any //changes made to the variables in foo doesn't affect the original.
print X; //prints 1
print Y; //prints 2
print Z; //prints 3

但是当我们通过引用发送参数时,它会复制变量的地址,这意味着我们对函数内的变量所做的任何事情实际上都是在原始内存位置完成的,例如
foo(a, b, c)
{
b =b++;
a = a++;
c = a + b*10
}

X=1;
Y=2;
Z=3;
foo(X, Y+2, Z);

print X; //prints 2
print Y; //prints 5
print Z; //prints 52

以姓名通行证;
Pass-by-name

关于pass-by-reference - 按引用、值和名称调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15823903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com