对于我的编程语言课程,我试图了解 pass-by-name 和 pass-by-value-result 的工作原理。我意识到这些在主流语言中几乎没有使用,但我想了解它们是如何工作的。例如(与语言无关):
void swap(int a, int b){
int t;
t = a;
a = b;
b = t;
}
void main() {
int val = 1, list[5] = {1, 2, 3, 4, 5}
swap(val, list[val]);
}
对于 pass-by-value-result 和 pass-by-name 调用交换之后 val 和 list 的值是什么。
一个解释也会很棒。
根据我的推断,它得到了值结果:val=2,list={1,1,3,4,5} 和名称:val=3,list={1,2,1,4,5}。我对这些结果非常不确定。
当传递一个数组而不是单个 int 时,它是否会改变这两种方法的工作方式?感谢您提前提供任何帮助。