令和3年度 春期 システムアーキテクト試験 午前Ⅱ 問8

サブルーチンへの引数の受渡し方のうち,引数として渡した変数の値が,サブルーチンの実行後に変更されないことが保証されているものはどれか。

解答・解説

正解: ア. 値呼出し

サブルーチン(関数やメソッドなど)を呼び出す際の引数の渡し方において、値呼出し(Call by Value)は、呼び出し元の変数(実引数)の「値」をコピーして、サブルーチン側の変数(仮引数)に渡す方式です。

サブルーチン内で仮引数の値を変更しても、それはあくまでコピーされたデータに対する操作であるため、呼び出し元の変数には影響を与えません。したがって、サブルーチンの実行後に元の変数の値が変更されないことが保証されています。

各選択肢の解説

  • ア(値呼出し):正解。引数のデータをコピーして渡すため、呼び出し元の変数の値は保護され変更されません。
  • イ(結果呼出し):誤り。サブルーチンの実行終了時に、サブルーチン内での結果(仮引数の値)を呼び出し元の変数(実引数)に書き戻す方式です。実行後に値が変更されます。
  • ウ(参照呼出し):誤り。変数のメモリ上のアドレス(参照)を渡す方式です。サブルーチン内で仮引数を操作すると、呼び出し元の変数も直接書き換えられてしまいます。
  • エ(名前呼出し):誤り。サブルーチン内で仮引数が使われるたびに、対応する実引数の式をその場で評価する方式です。実引数として変数を渡した場合、サブルーチン内での操作によって値が変更される可能性があります。

Spineチーム