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)
我正在努力开始研究即将到来的决赛,这似乎是一个很好的评论问题.名字传递对我来说绝对是最陌生的.
当您按值传递参数时,它只是复制函数参数中的值,并且在函数内对该变量所做的任何操作都不会反映原始变量,例如
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)
通过名字; 传址名称
| 归档时间: |
|
| 查看次数: |
13733 次 |
| 最近记录: |