平成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=2,Y=4
- イX=2,Y=6
- ウX=4,Y=2
- エX=4,Y=6
正解:イ
解説
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にはなりません。