ウカマル応用情報技術者ログイン

平成28年度 春期 応用情報技術者 問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;
選択肢
正解と解説

正解 イ

値呼出しのXは手続内で変えても呼出し元に戻らず、参照呼出しのYは変更が呼出し元に反映されます。X=2、Y=6です。

値呼出し(call by value)は、実引数の値をコピーして渡します。そのため、手続内の変更は呼出し元に影響しません。参照呼出し(call by reference)は実引数の場所を渡すので、手続内の変更が呼出し元の変数に反映されます。手続内では、まずX=2+2=4となりますが、これは手続内のコピーだけが変わります。次にY=4+2=6となり、メインプログラムのYが6になります。手続を終えた後のメインプログラムの値は、X=2、Y=6です。

ア:Y=X+Yの計算に、更新前のX=2を使っています。手続内のXは直前に4になっているので、Yは4+2=6です。

ウ:Xを参照呼出し、Yを値呼出しとして逆に扱った結果です。Xは値呼出しなので、メインプログラムのXは2のままです。

エ:XもYも参照呼出しとして扱った結果です。値呼出しのXは、手続内で4になってもメインプログラムには反映されません。

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

全年度から出題。10問で実力を判定します。登録不要。

出典:平成28年度 春期 応用情報技術者試験 問20(独立行政法人情報処理推進機構)

解説と用語ページは生成 AI が書き、別の生成 AI が確かめています。作り方