执行类C程序后的结果是什么,如果参数传递机制是按名称传递结果?
procedure swap(int x, int y){
int t = x;
x = y;
y = t;
}
main(){
int v = 1;
int list[5] = {1,3,5,7,9};
swap(v, list[v]);
}
答案 0 :(得分:0)
(注意:我假设这个问题是关于名字的问题,正如问题的正文所暗示的那样 - 不是标题所暗示的按价值调用结果。)
当使用call-by-name时,你可以通过在调用站点插入函数体并用(未评估的)参数替换函数体中每个参数名称来找出函数调用的结果。
在这种情况下,这意味着将每个x
替换为v
,每次出现y
替换为list[v]
。如果你这样做并在头脑中执行结果代码,你会看到结果是什么。