【发布时间】:2012-03-31 17:23:24
【问题描述】:
对于我的编程语言课程,我试图了解 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 调用 swap 之后 val 和 list 的值会是什么。
解释也很好。
根据我的推断,它得到了 value-result: val=2, list={1,1,3,4,5} 和 name: val=3, list={1,2,1,4,5 }。我对这些结果非常不确定。
当传递一个数组而不是单个 int 时,它是否也改变了这两种方法的工作方式?提前感谢您的帮助。
【问题讨论】:
标签: parameter-passing pass-by-name