FE Study
FE Study メニュー

学習記録はこのブラウザー内に保存されます。

ホーム問題を解く
ログイン不要・無料で学習

ONE QUESTION, ONE STEP

関数を学ぼう

選んで、確かめて、理解する。焦らず進めましょう。

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。

実務での意味

関数が入力を変更するのか、新しい結果を返すのかを区別すると、呼出し元の意図しない変化を防げます。

解説:本サイト編集部によるオリジナル文章

この問題の前後に、プログラミングの基礎知識ガイドで、 仕組み・比較・解き方を確認できます。 この問題の誤りを報告する(GitHub)。問題IDとURLを入力した下書きが開きます。自動投稿は行いません。 投稿は公開されるため、氏名・住所・メールアドレス・学習記録は記入しないでください。 詳しくはお問い合わせ窓口をご覧ください。