平成28年度 春期
応用情報技術者試験問題と解答
問20
メインプログラムを実行した後、メインプログラムの変数の値はいくつに
なるか。ここで、仮引数は値呼出し(call by value)、仮引数は参照呼出し
(call by reference)であるとする。

 メインプログラム
   =2;
   =2;
   add();

 手続きadd(
   
   
   return;

      ┌──┬──┐
      │ X │ Y │
    ┌─┼──┼──┤
    │ア│ 2 │ 4 │
    ├─┼──┼──┤
    │イ│ 2 │ 6 │
    ├─┼──┼──┤
    │ウ│ 4 │ 2 │
    ├─┼──┼──┤
    │エ│ 4 │ 6 │
    └─┴──┴──┘


【正解】 イ
値呼び出しは引数(変数)の値をコピーして渡す渡し方。
サブ関数の中で引数がどのような値に変化しても、呼び出した
元プログラムの引数の値は変らない。

参照呼出しは引数(変数)の値を共有する渡し方。(アドレス渡し)
サブ関数の中で引数の値が変化したら、呼び出した元プログラムの
引数の値にも反映される。

これを踏まえて、プログラムを順に追いかける。
  
=2;       ・・・=2、=0
  
=2;       ・・・=2、=2
  add(
);   
     
  ・・・=4、=2
     
  ・・・=4、=6
     return;
終了時点では  
=2、 =6となる。



問19 目次 問21
ファーストマクロ TOPページ