QUESTION 37
整数変数xの値は10である。関数addThreeへxを値渡しすると、関数内の仮引数pにはxの値のコピーが入り、pを変更しても呼出し元のxは変わらない。次の関数を呼び出し、y ← addThree(x)を実行した後のxとyはどれか。 ○ 整数型: addThree(整数型: p) p ← p + 3 return p
出典:本サイト オリジナル教材(2026年)
本サイトで独自に作成。IPAの試験問題からの転載ではありません。
公開日:
選択肢を選んで、答え合わせをしましょう。
回答せずに正解・解説を確認する
正解:イ x = 10、y = 13
この表示だけでは、回答数や正答率は変わりません。
解説
呼出し時にpへ10がコピーされ、関数内ではpが13になります。return pによって返された13はyに代入されます。問題の値渡しの定義により、pの変更はxへ反映されないので、xは10のままです。
ア
pの変更を呼出し元へ反映する場合と混同しています。ここではxのコピーを渡します。
イ
呼出し元のxは10のままで、戻り値13がyに入ります。
ウ
戻り値を求める前にpへ3を加えているため、yは13です。
エ
xは変わらず、戻り値も10ではありません。
関連知識
仮引数、呼出し元の実引数、戻り値を別々に追います。配列やオブジェクトの受渡しは言語によって扱いが異なるため、整数の値渡しの説明をすべての型へ一般化しないようにします。
間違えやすいポイント
同じ値で始まっても、xとpは同じ変数ではありません。戻り値を受け取る変数も別です。
覚え方
値はコピー、結果はreturn。
実務での意味
関数が入力を変更するのか、新しい結果を返すのかを区別すると、呼出し元の意図しない変化を防げます。
解説:本サイト編集部によるオリジナル文章