按引用,值和名称调用

wor*_*Man 8 pass-by-reference pass-by-value pass-by-name

我试图理解按引用,值和名称调用之间的概念差异.

所以我有以下伪代码:

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

X=1;
Y=2;
Z=3;
foo(X, Y+2, Z);
Run Code Online (Sandbox Code Playgroud)

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

另一种情况:

X=1;
Y=2;
Z=3;
foo(X, Y+2, X);
Run Code Online (Sandbox Code Playgroud)

我正在努力开始研究即将到来的决赛,这似乎是一个很好的评论问题.名字传递对我来说绝对是最陌生的.

nom*_*ian 5

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

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
Run Code Online (Sandbox Code Playgroud)

但是当我们通过引用发送参数时,它会复制变量的地址,这意味着无论我们对函数中的变量做什么,实际上都是在原始内存位置完成的,例如

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
Run Code Online (Sandbox Code Playgroud)

通过名字; 传址名称

  • 我发现你的值调用和引用调用的例子没有任何区别....你只是在注释中改变变量的值.我想知道如何通过值和引用不同地传递变量,因为在您的示例中所有代码都是相同的.所以,我无法得到它. (2认同)