メインプログラムを実行した後,メインプログラムの変数 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 は値呼出し(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 が確かめています。作り方