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

- ア X:2,Y:4
- イ X:2,Y:6
- ウ X:4,Y:2
- エ X:4,Y:6
解答・解説を見る
正解:イ
AI解説
値呼出し(call by value)は実引数の値のコピーを渡すため、手続内で仮引数を変更しても呼出し元の変数は変わらない。参照呼出し(call by reference)は変数の実体(アドレス)を渡すため、手続内の変更が呼出し元に反映される。本問ではXは値呼出しなのでmainのXは2のまま、Yは参照呼出しなので手続内での更新結果6が反映され、X:2、Y:6のイが正しい。 ア: Yを4とするのは、手続内でのYへの最終的な代入結果を追い切れていない誤りである。 イ: 正しい。値呼出しのXは呼出し元に影響せず2のまま、参照呼出しのYは手続内の計算結果6が反映される。 ウ: XとYの呼出し方式を取り違え、Xに手続内の変更が反映されるとした誤りである。 エ: Xも参照呼出しとして手続内の変更4が反映されるとした誤りである。値呼出しではコピーが変更されるだけである。 💡 「値呼出し=コピーを渡す→元は不変」「参照呼出し=実体を渡す→元も変わる」が鉄則。トレースでは、仮引数と実引数が同じ箱か別の箱かを図に書いて追うと間違えない。
出典:平成25年度 春期 応用情報技術者試験 午前 問20 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。