Programming languages 关于参数传递(按值传递结果)

Programming languages 关于参数传递(按值传递结果),programming-languages,parameter-passing,Programming Languages,Parameter Passing,如果参数传递机制是按名称传递结果,那么在执行类似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]); } (注意:我假设问题是关于问题主体所建议的按名称调用,而不是标题所建议的按值调用结果。) 使用“按名称调用”时,可以通过在调

如果参数传递机制是按名称传递结果,那么在执行类似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]);
}
(注意:我假设问题是关于问题主体所建议的按名称调用,而不是标题所建议的按值调用结果。)

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


在这种情况下,这意味着将每次出现的
x
替换为
v
,将每次出现的
y
替换为
list[v]
。如果您这样做并在头脑中执行生成的代码,您将看到结果。

您的标题讨论的是与正文不同的调用约定。这是故意的吗?另外:你认为结果会是什么?为什么?