C言語のreturn文とは?戻り値を返す意味を初心者向けにわかりやすく解説

C言語関連

C言語を学び始めると、関数の最後に登場するreturn文の意味で混乱する人は少なくありません。特に「returnで返している変数を、呼び出し元で直接使っていないように見える」という疑問は、関数と戻り値の仕組みを理解する上で重要なポイントです。

この記事では、C言語のreturn文がなぜ必要なのか、戻り値がどのように呼び出し元へ渡されるのかを、具体的なコード例を使って解説します。

C言語のreturn文は何をしているのか

C言語のreturn文は、関数で計算した結果や処理結果を、関数を呼び出した場所へ返すために使われます。

例えば、商品の合計金額を計算する関数を作った場合、関数内で計算した金額をreturnで返すことで、呼び出し元のmain関数などでその結果を利用できます。

重要なのは、returnする変数そのものを呼び出し側で使う必要はないという点です。returnで返されるのは「変数」ではなく、その変数に入っている値です。

質問のコードでreturn kingakuの意味を確認する

例として、次のようなコードを考えます。

#include <stdio.h>

int fruits(int apple);

int main(void){
    int hoge;
    hoge = fruits(5);
    printf("%d", hoge);
    return 0;
}

int fruits(int apple){
    int kingaku;
    kingaku = apple * 300;
    return kingaku;
}

このプログラムでは、fruits関数に5が渡されます。するとappleには5が入り、kingakuには5×300の計算結果である1500が代入されます。

ここでreturn kingaku;と書くことで、fruits関数は1500という値を呼び出し元へ返します。そしてmain関数の以下の部分で受け取っています。

hoge = fruits(5);

つまり、この1行は実際には次のような流れになります。

  1. fruits(5)を実行する
  2. fruits関数内で1500を計算する
  3. return kingakuによって1500を返す
  4. hogeに1500を代入する
  5. printfでhogeの1500を表示する

そのため、kingakuをmain関数で直接使わなくても問題ありません。kingakuはfruits関数の中だけで存在する一時的な変数だからです。

なぜkingakuではなくhogeを使うのか

C言語では、関数内で作ったローカル変数は、その関数の中でしか利用できません。

今回の場合、kingakuはfruits関数の中で宣言されています。

int fruits(int apple){
    int kingaku;
}

このkingakuはfruits関数専用の変数です。そのためmain関数からは直接アクセスできません。

もしmain関数で計算結果を使いたい場合は、returnで値だけを渡します。そして、その値をhogeという別の変数で受け取ります。

例えば、別の名前の商品計算でも同じ仕組みになります。

int price;
price = fruits(10);

この場合でもfruits関数から返ってくる値は「kingakuという変数」ではなく、「計算された3000という値」です。受け取る側はpriceという名前の変数でも問題ありません。

returnしない場合はどうなるのか

もしreturnを書かなかった場合、計算したkingakuの値は関数の外へ渡りません。

例えば以下のようなコードでは、fruits関数内で1500を計算してもmain関数では利用できません。

int fruits(int apple){
    int kingaku;
    kingaku = apple * 300;
}

この場合、kingakuは関数終了と同時に消えてしまいます。せっかく計算した結果を他の場所で使えないため、returnによって値を渡す必要があります。

関数は「何かを計算する場所」、returnは「計算結果を外へ渡す出口」と考えると理解しやすくなります。

戻り値は変数ではなくデータを渡している

初心者が混乱しやすいポイントは、「return kingaku」と書いてあるため、kingakuという変数自体を渡しているように感じてしまうことです。

しかし実際には、returnしているのはkingakuという箱ではなく、その箱の中に入っている1500という値です。

イメージすると、kingakuという箱に1500円が入っていて、その箱の中身だけをmain関数へ渡している状態です。main関数では、その1500円をhogeという別の箱に入れています。

returnを使うメリット

returnを使うことで、同じ処理を何度も利用できるようになります。

例えば商品の金額計算をする場合、main関数ですべて計算することもできますが、専用の関数にしておけば必要な場所から呼び出せます。

実際のプログラムでは、計算結果、入力チェックの結果、データ取得結果など、多くの場面で戻り値が利用されています。

まとめ

C言語のreturn文は、関数内で計算した結果を呼び出し元へ渡すための仕組みです。

今回の例では、return kingakuによってkingakuという変数そのものを渡しているのではなく、kingakuに入っている1500という値を返しています。

そのためmain関数ではkingakuではなく、戻ってきた値を受け取ったhogeを使います。関数内の変数と戻り値の違いを理解すると、C言語の関数の仕組みがより分かりやすくなります。

コメント

タイトルとURLをコピーしました