平成31年度 春期 午前Ⅱ 問24
アルゴリズムとプログラミング
引数に関する問題
サブルーチンへの引数の受渡し方のうち,引数として渡した変数の値が,サブルーチンの実行後に変更されないことが保証されているものはどれか。
- ア値呼出し
- イ結果呼出し
- ウ参照呼出し
- エ名前呼出し
答えと解説を見る
✓ これが正解ア値呼出し
解説
値呼出しは値の写しを渡すので、元の変数は変わりません。
値呼出しでは、呼び出す側の変数の値をコピーして、サブルーチンの仮引数に渡します。サブルーチンの中で仮引数をどう書き換えても、変わるのはコピーの方だけで、呼び出した側の変数そのものには影響しません。そのため、引数として渡した変数の値がサブルーチンの実行後に変更されないことが保証されます。これに対して、変数の場所を渡す方式や、終了時に結果を書き戻す方式では、呼出しの後に元の変数が変わることがあります。渡すものが写しなのか場所なのかで見分けると整理できます。
ほかの選択肢はなぜ違うのか
- イ結果呼出し:結果呼出しは、サブルーチンの終了時に仮引数の値を呼出し側の変数へ書き戻す方式です。結果を返すために変数を書き換えることが前提なので、実行後に値が変わらない保証はありません。
- ウ参照呼出し:参照呼出しは、変数の値ではなく変数の場所(アドレス)を渡す方式です。サブルーチンの中で仮引数を書き換えると、呼び出した側の変数がそのまま書き換わります。
- エ名前呼出し:名前呼出しは、引数の式そのものを渡し、サブルーチンの中で使われるたびに評価し直す方式です。仮引数への代入は元の変数への代入として働くので、値が変わらない保証はありません。
出典:平成31年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問24
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)