0

如果参数传递机制是pass-by-name-result,执行完类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]);
}
4

1 回答 1

0

(注意:我假设问题是关于按名称调用的,正如问题的正文所暗示的那样 - 而不是标题所暗示的按值调用的结果。)

使用按名称调用时,您可以通过在调用站点插入函数的主体并用(未评估的)参数替换函数主体中每次出现的参数名称来计算函数调用的结果。

在这种情况下,这意味着替换每次出现的xwithv和每次出现的ywith list[v]。如果您这样做并在脑海中执行生成的代码,您将看到结果是什么。

于 2012-04-23T13:53:01.427 回答