ホーム > システムアーキテクト試験 > 2021年
システムアーキテクト試験 2021年 午前2 問08
サブルーチンへの引数の受渡し方のうち、引数として渡した変数の値が、サブルーチンの実行後に変更されないことが保証されているものはどれか。
エ:名前呼出し
イ:結果呼出し
ウ:参照呼出し
ア:値呼出し(正解)
解説
サブルーチンへの引数の受渡し方のうち、引数として渡した変数の値が、サブルーチンの実行後に変更されないことが保証されているものはどれか【午前2 解説】
要点まとめ
- 結論:引数の値が変更されないことが保証されているのは「値呼出し」である。
- 根拠:値呼出しは変数の値をコピーして渡すため、サブルーチン内での変更が呼び出し元に影響しない。
- 差がつくポイント:参照呼出しや結果呼出しは変数の実体を操作するため、値が変わる可能性がある点を理解すること。
正解の理由
「値呼出し」は引数の値をコピーしてサブルーチンに渡す方式です。これにより、サブルーチン内で引数の値を変更しても、呼び出し元の変数には影響が及びません。したがって、引数の値が変更されないことが保証されます。対して、参照呼出しや結果呼出しは変数の実体を操作するため、値が変わる可能性があります。
よくある誤解
値呼出しでも変数の値が変わると思い込むことがありますが、実際はコピー渡しなので元の変数は不変です。参照呼出しと混同しやすい点に注意しましょう。
解法ステップ
- 引数の受渡し方法の種類を確認する(値呼出し、参照呼出し、結果呼出し、名前呼出し)。
- 各方式の特徴を整理する(コピー渡しか実体渡しか)。
- 「値が変更されないことが保証される」条件に合致する方式を選ぶ。
- 値呼出しが該当することを確認し、正解とする。
選択肢別の誤答解説
- ア: 値呼出し
引数の値をコピーして渡すため、サブルーチン内の変更が呼び出し元に影響しない。正解。 - イ: 結果呼出し
サブルーチン終了時に引数の値を呼び出し元にコピーするため、値が変更される可能性がある。誤り。 - ウ: 参照呼出し
引数の実体を渡すため、サブルーチン内での変更が呼び出し元に反映される。誤り。 - エ: 名前呼出し
引数の名前を展開して評価する方式で、値の変更が呼び出し元に影響する場合がある。誤り。
補足コラム
引数の受渡し方式はプログラミング言語や環境によって異なります。例えば、C言語は基本的に値呼出しですが、ポインタを使うことで参照渡しのような動作も可能です。Javaはオブジェクトの参照を値として渡すため、オブジェクトの状態変更は呼び出し元に影響しますが、参照自体はコピーされます。これらの違いを理解することが重要です。
FAQ
Q: 値呼出しと参照呼出しの違いは何ですか?
A: 値呼出しは変数の値をコピーして渡すため、サブルーチン内の変更は呼び出し元に影響しません。参照呼出しは変数の実体を渡すため、変更が呼び出し元に反映されます。
A: 値呼出しは変数の値をコピーして渡すため、サブルーチン内の変更は呼び出し元に影響しません。参照呼出しは変数の実体を渡すため、変更が呼び出し元に反映されます。
Q: 結果呼出しはどのような場合に使われますか?
A: 結果呼出しはサブルーチンの処理結果を呼び出し元に返すために使われ、処理終了後に値がコピーされるため、途中での値変更は呼び出し元に影響しませんが、最終的な値は変わります。
A: 結果呼出しはサブルーチンの処理結果を呼び出し元に返すために使われ、処理終了後に値がコピーされるため、途中での値変更は呼び出し元に影響しませんが、最終的な値は変わります。
関連キーワード: 引数受渡し, 値呼出し, 参照呼出し, 結果呼出し, 名前呼出し, サブルーチン, プログラミング基礎