令和3年度 春期 午前Ⅱ 問8
ソフトウェア
サブルーチンへの引数の受渡し方のうち,引数として渡した変数の値が,サブルーチンの実行後に変更されないことが保証されているものはどれか。
- ア値呼出し
- イ結果呼出し
- ウ参照呼出し
- エ名前呼出し
答えと解説を見る
✓ これが正解ア値呼出し
解説
値呼出しは値の写しを渡すので、元の変数は変わりません。
引数の受渡し方は、サブルーチンに何を渡し、終わったときに呼出し元へ何が戻るかで区別します。値呼出しは、変数の値の写しをサブルーチンに渡す方式です。サブルーチンの中で引数を書き換えても、変わるのは写しのほうだけで、呼出し元の変数そのものには手が届きません。そのため、実行後に変数の値が変わらないことが保証されます。ほかの方式は、実行後に結果を書き戻したり、変数の格納場所を渡したり、使うたびに変数そのものを参照したりするため、呼出し元の変数が変わり得ます。写しを渡すか、本体への道筋を渡すか、と考えると、値が守られる方式を選べます。
ほかの選択肢はなぜ違うのか
- イ結果呼出し:結果呼出しは、サブルーチンの実行が終わったときに、その中で求めた値を呼出し元の変数へ書き戻す方式です。結果を返すために変数を書き換えるので、実行後に値が変わらないことは保証されません。
- ウ参照呼出し:参照呼出しは、変数の格納場所、つまり番地を渡す方式です。サブルーチンが引数を書き換えると、その番地にある呼出し元の変数そのものが変わるため、値が保たれる保証はありません。
- エ名前呼出し:名前呼出しは、引数を名前のまま渡し、サブルーチンの中で使うたびにその名前が指すものを評価する方式です。サブルーチンの中で代入すれば呼出し元の変数も書き換わるので、値が変わらない保証はありません。
出典:令和3年度 春期 システムアーキテクト試験 午前Ⅱ 問8
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)