パラメータ受け渡しメカニズムが名前による受け渡しの場合、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]);
}
(注:質問の本文が示唆するように、質問は名前による呼び出しに関するものであると想定しています-タイトルが示唆するような値による呼び出しの結果ではありません。)
名前による呼び出しを使用する場合、呼び出しサイトに関数の本体を挿入し、関数の本体内のパラメーター名の各発生を (未評価の) 引数に置き換えることにより、関数呼び出しの結果を把握できます。
この場合、これはwithの各出現とx
withの各出現を置き換えることを意味します。それを行い、結果のコードを頭の中で実行すると、結果がどうなるかがわかります。v
y
list[v]