IPA過去問ドリル

平成25年度 春期 応用情報技術者試験 午前 問20

テクノロジ/開発技術

メインプログラムを実行した後,メインプログラムの変数X,Yの値は幾つになるか。ここで,仮引数Xは値呼出し(call by value),仮引数Yは参照呼出し(call by reference)であるとする。 メインプログラム X=2; Y=2; add(X,Y); 手続 add(X,Y) X=X+Y; Y=X+Y; return;

出典:平成25年度 春期 応用情報技術者試験 午前 問20

正解:イ

解説

Xは値呼出しなのでadd内での変更はメインプログラムのXに影響しません。Yは参照呼出しなのでadd内でのYへの代入がメインプログラムのYにも反映されます。add内ではまずX(コピー)=2+2=4,続いてY=4+2=6となり,参照渡しのYは6に更新されます。メインのXは呼出し前のまま2です。

選択肢ごとの解説

  • 誤り。Yは参照呼出しなのでadd内での更新がメインのYにも反映され,4ではなく6になります。
  • 正しい。値呼出しのXはメインでは2のまま変わらず,参照呼出しのYはadd内の計算結果である6に更新されます。
  • 誤り。Xは値呼出しなのでadd内でX=4になってもメインのXには影響せず,2のままです。
  • 誤り。Xは値呼出しのためメインのXは2のままであり,4にはなりません。
応用情報技術者の過去問を演習モードで解く