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

【問題】

メインプログラムを実行した後、メインプログラムの変数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は値呼び出しであるから、メインプログラムのX=2が手続きaddの仮引数Xに代入されるものの、returnで返ってくる値をメインプログラムのXには入れていないため、X=2のままとなる。

一方、Yは参照呼出しであるから、メインプログラムのY=2の参照値が手続きaddの仮引数Yに与えられるため、手続きaddで行ったYの値の変更は、メインプログラムに戻った時にも保存されることとなる。

ここで、実際にプログラムをトレースすると、

X=2+2;

Y=4+2;

となり、Y=6となる。

よって、解答はX=2、Y=6となる。

↓クリックしていただけると励みになります↓
にほんブログ村 株ブログ 株日記へ にほんブログ村 メンタルヘルスブログ 統合失調症へ にほんブログ村 為替ブログ 為替日記へ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする