メインプログラムを実行した結果はどれか。ここで、staticは静的割当てを、autoは動的割当てを表す。
解答・解説を見る
解答:イ
プログラムの実行時に関数の中で宣言する変数の割当方法には、次のものがある。
- 動的割当
- 動的に割り当てるメモリ領域を使う。
関数終了時に変数はメモリから削除されるため値が残らない。
- 静的割当
- あらかじめ固定されたメモリ領域を使う。
呼び出された関数が終了しても変数自体はメモリ上に存在するので変数の値は残る。
- X=f(2) + f(2)
関数fの変数は動的割当なので関数終了時に変数の値は削除されている。
- 1回目のf(2)で2+1=3
- 2回目のf(2)で2+1=3
- 3+3=6
- Y=g(2) +gf(2)
関数gの変数は静的割当なので関数終了時に変数の値は残っている。
- 1回目のg(2)で2+1=3
- 2回目のg(2)で3+2=5
- 3+5=8
したがって、イが正解である。