2016年(平成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
ア 2 4
イ 2 6
ウ 4 2
エ 4 6


答え イ


【解説】
メインプログラムが手続きadd (X 、Y )を呼出したときの、X 、Y の値は、X =2、Y =2である。
手続きadd (X 、Y )の1行目の処理X =X +Y を行うと、X =2、Y =2なので、X =4 になり、
2行目の処理X =X +Y を行うと、X =4、Y =2なので、Y =6 になる。
3行目のreturnで手続きを抜けてメインプログラムに戻るが、X は値呼出しなので手続き内の値はメインプログラムに影響せず、X =2のままである。
また、Y は参照呼出しなので手続き内の値がメインプログラムにも引き継がれて、Y =6(イ)である。


【キーワード】
・変数の呼び出し

【キーワードの解説】
  • 変数の呼び出し
    関数の変数の呼び出し(関数への変数の引渡し)には値呼出しと参照呼出しがある。
    • 値呼出し(call by value)
      関数が変数の値のみ継承する方法で、関数内で変数の書き換えを行っても、関数の呼出し元の変数の値は変化しない。
    • 参照呼出し(call by reference)
      関数が変数を参照(アクセス)するための情報(アドレス)を継承する方法で、関数内で変数の書き換えを行うと、呼出し元の変数の値も変わる。

もっと、「参照呼出し」について調べてみよう。

戻る 一覧へ 次へ