正答1
解説
正解は1です。
サブルーチンへの引数の渡し方の違いを問う問題です。
呼出し元の変数の値が変わらないことが保証されるのは、値のコピーを渡す方式です。
【選択肢別解説】
1:○ 値呼出し(call by value)は、変数の値をコピーしてサブルーチンに渡します。
サブルーチンがコピーを変更しても、呼出し元の変数は変わりません。
2:× 結果呼出し(call by result)は、サブルーチンの終了時に結果を呼出し元の変数に書き戻す方式です。
そのため呼出し元の変数は変更されます。
3:× 参照呼出し(call by reference)は、変数のアドレスを渡します。
サブルーチンはその場所を直接書き換えられるので、呼出し元の変数が変わることがあります。
4:× 名前呼出し(call by name)は、引数の式そのものを渡し、使うたびに評価する方式です。
変数を渡すと参照呼出しと同様に書き換えられることがあります。
【ポイント】
値呼出しは安全ですが、大きなデータを渡すとコピーの手間がかかります。
参照呼出しはコピーが不要な反面、呼出し元のデータを書き換える可能性があります。