第2種情報処理技術者試験 |
1999年度 = 平成11年度・秋期 |
午前 |
問39 |
次のプログラムを実行したときの結果はどれか。ここで、仮引数xは値呼出し(call by value)、yは参照呼出し(call by reference)とする。
メインプログラム
| サブプログラム sub(x,y)
|
a=3;
| x=x+y;
|
b=2;
| y=x+y;
|
sub(a,b);
| return;
|
ア a=3,b=2
| イ a=3,b=7
| ウ a=5,b=2
| エ a=5,b=7
|
イ
関数・モジュール間の引数の受け渡しには、次の二つがあります。
- ■ 値渡し(call by value)
- 呼出し側が渡す引数のコピーを呼び出される側が受け取ります。したがって、その値を関数・モジュール内で変更しても、呼出し側の引数には反映されません。
- ■ 参照渡し(call by reference)
- 呼出し側が渡す引数の実体を呼び出される側が受け取ります。したがって、その値を関数・モジュール内で変更した場合、呼出し側の引数に反映されることになります。
本問では、サブプログラムsub内でxの値は5になり、yの値は7になります。したがって、参照渡しであるbの値は7となりますが、値渡しであり値が変更されないaの値は3のままです。