エンベデッドシステムスペシャリスト 2019年 午前2 問24
問題文
サブルーチンへの引数の受渡し方のうち、引数として渡した変数の値が、サブルーチンの実行後に変更されないことが保証されているものはどれか。
選択肢
ア:値呼出し(正解)
イ:結果呼出し
ウ:参照呼出し
エ:名前呼出し
🔒 解説は解答すると表示されます
値呼出し【午前2解説】
正解の理由
値呼出しでは、呼出し元の変数の値をコピーしてサブルーチンに渡します。サブルーチン内で引数の値を変更しても、変更されるのはコピーされた値であり、呼出し元の変数には影響しません。
したがって、サブルーチンの実行後に、引数として渡した変数の値が変更されないことが保証されるのはアです。
解法ステップ
- 問題文の「実行後に変更されないことが保証」という条件に注目します。
- 引数の値そのものをコピーして渡す方式を選びます。
- コピーを変更しても、元の変数は変化しないため、値呼出しが該当します。
選択肢別の誤答解説
- ア 値呼出し
引数の値のコピーを渡します。サブルーチン内でコピーを変更しても、呼出し元の変数は変更されません。 - イ 結果呼出し
サブルーチンの実行後に、引数の値を呼出し元へ戻す方式です。そのため、呼出し元の変数が変更される可能性があります。 - ウ 参照呼出し
呼出し元の変数を参照して操作する方式です。サブルーチン内で引数を変更すると、呼出し元の変数も変更される可能性があります。 - エ 名前呼出し
引数の式を、サブルーチン内で必要になった時点で評価する方式です。呼出し元の変数が変更されないことは保証されません。
よくある誤解
- 値呼出しでも、サブルーチン内の引数の値は変更できます。変更できないのは、呼出し元の変数そのものです。
- 引数を渡すという操作だけで、常に値がコピーされるわけではありません。参照呼出しなど、受渡し方式によって呼出し元への影響が異なります。
- 結果呼出しは、呼出し時に値を渡す方式ではなく、実行後に値を呼出し元へ返す方式です。
補足コラム
値呼出しは、呼出し元のデータを意図せず変更するリスクを抑えられる方式です。一方、サブルーチンでの変更結果を呼出し元に反映したい場合は、結果呼出しや参照呼出しなどが使われます。
FAQ
Q. 値呼出しでは、サブルーチン内で引数の値を変更できますか?
A. 変更できます。ただし、変更されるのは渡されたコピーであり、呼出し元の変数には反映されません。
A. 変更できます。ただし、変更されるのは渡されたコピーであり、呼出し元の変数には反映されません。
Q. 参照呼出しとの違いは何ですか?
A. 値呼出しは値のコピーを渡すのに対し、参照呼出しは呼出し元の変数を参照して操作します。そのため、参照呼出しではサブルーチン内の変更が呼出し元に反映されることがあります。
A. 値呼出しは値のコピーを渡すのに対し、参照呼出しは呼出し元の変数を参照して操作します。そのため、参照呼出しではサブルーチン内の変更が呼出し元に反映されることがあります。
関連キーワード: 値呼出し、結果呼出し、参照呼出し、名前呼出し、引数受渡し

\ せっかくなら /
エンベデッドシステムスペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

