平成23年度 秋期
応用情報技術者試験問題と解答
問22
メインプログラムを実行した結果はどれか。ここで、static は
静的割当てを、auto は動的割当てを表す。

メインプログラム
 auto int x, y ;
 x = f(2) + f(2) ;
 y = g(2) + g(2) ;

関数 f(u)
 auto int u ;
 auto int v = 1;
 v = v + u ;
 return v ;

関数 g (u)
 auto int u ;
 static int v = 1;
 v = v + u ;
 return v ;

   ┌───┬───┐
   │ x │ y │
 ┌─┼───┼───┤
 │ア│ 6 │ 6 │
 ├─┼───┼───┤
 │イ│ 6 │ 8 │
 ├─┼───┼───┤
 │ウ│ 8 │ 6 │
 ├─┼───┼───┤
 │エ│ 8 │ 8 │
 └─┴───┴───┘



【正解】 イ

静的割り当ては、関数が1度呼び出されると、
メモリが割り当てられ、プログラムが終了するまで、
値が保持される。

動的割り当ては、関数が呼び出されるたびに、
メモリが割り当てられ、値は保持されない。

【x について】
1回目の f(2) の呼び出しでは
v = 1 + 2 =
であり、
2回目の f(2)の呼び出しでも vの値は保持されないから、
v = 1 + 2 =
となる。

従って、
x = f(2) + f(2) = 3 + 3 =


【yについて】
1回目の g(2) の呼び出しでは
v = 1 + 2 =
であり、
2回目の g(2)の呼び出しでは
1回目の g(2)の呼び出しにより v =
が保持されるから、
v =
+ 2 = 5 となる。

従って、
y = g(2) + g(2) = 3 + 5 =


EXCEL VBAのご相談なら ファーストマクロ 



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