
C言語入門|戻り値の基本と受け取り方
戻り値のしくみは前の節で学びましたね。
関数が計算結果や判定結果を呼び出し元へ返せる、というのはとても強力な仕組みです。
ただ、ここでこんな疑問が出てきやすいんです。
- 戻り値っていくつでも返せるの?
- return はどこに書いてもいいの?
- 返ってきた値はどうやって使うの?
この節では、
戻り値の基本ルールと、正しい受け取り方 を
落ち着いて整理していきましょう。

戻り値は1つしか返せない
まず、とても大事なルールからです。
戻り値は1つしか返せません。
引数は複数指定できますが、
return 文で返せる値は必ず1つだけです。
| 項目 | 可能か |
|---|---|
| 引数を複数受け取る | 可能 |
| 戻り値を複数返す | 不可能 |
そのため、次のような書き方はできません。
return a, b; // これは不可もし「複数の値をまとめて返したい」場合は、
- 配列
- 構造体
といった 集成体型 を使って1つにまとめる、
という設計を行います。
return 文は処理を即座に終了させる
return 文には、
もう1つ重要な役割があります。
それは、
関数の実行をその場で終了させる
という点です。
次の例を見てください。
プロジェクト名:8-10-1 ソースファイル名: sample8-10-1.c
#include <stdio.h>
int calc(int a, int b)
{
int result = a + b;
return result;
printf("計算が終わりました\n"); // 実行されない
}この関数では、
- return が実行された瞬間に関数は終了
- それより下に書かれた文は一切実行されない
という動きになります。
処理の途中に return を書くときの注意
return 文は、
必ずしも関数の最後に書く必要はありません。
条件分岐の途中などで使うこともできます。
ただし、使い方には注意が必要です。
| ポイント | 内容 |
|---|---|
| return は強制終了 | それ以降の処理は行われない。 |
| 書く位置が重要 | 意図せず処理を飛ばす原因になる。 |
「ここで関数を終わらせてよいか?」
を意識しながら使うことが大切です。
戻り値を返すだけでは何も起こらない
ここで、よくある勘違いを1つ。
「戻り値を返す関数にしたのに、画面に何も表示されない…」
これは 正しい動作 です。
戻り値を返す関数は、
- 計算や判定をする。
- 結果を値として返す。
だけの役割を持ちます。
表示するかどうかは、
呼び出し側の責任 になります。
戻り値を受け取らないと結果は捨てられる
次のようなコードを考えてみましょう。
int sum(int x, int y)
{
return x + y;
}
int main(void)
{
sum(10, 20); // 戻り値を受け取っていない
return 0;
}この場合、
- 関数は正しく計算をして
- 戻り値も返している
のですが、
呼び出し側が受け取っていないため、結果は無視されます。
関数は仕事をしているのに、
その成果を誰も使っていない状態ですね。
戻り値を受け取る基本構文
戻り値を正しく使うには、
次の構文を使います。
戻り値を受け取る変数 = 関数名(引数リスト);この形を使うことで、
- 関数の戻り値が
- 左辺の変数に代入される
という流れになります。
戻り値を受け取るサンプル例
内容と表示文を変えたサンプルを見てみましょう。
プロジェクト名:8-10-2 ソースファイル名: sample8-10-2.c
#include <stdio.h>
int nextYear(int current, int add)
{
return current + add;
}
int main(void)
{
int baseYear = 2030;
int future1;
future1 = nextYear(baseYear, 5);
printf("%d年の5年後は%d年です\n", baseYear, future1);
int future2 = nextYear(baseYear, 20);
printf("%d年は%d年の20年後です\n", future2, baseYear);
return 0;
}このプログラムの処理の流れ
このコードでは、次のように動いています。
- main 関数が nextYear を呼び出す。
- 引数として現在の年と加算年数を渡す。
- 関数が合計値を計算する。
- return 文でその値を返す。
- 呼び出し元で変数に代入して利用する。
関数は
答えを作って返す部品 として使われています。
変数宣言と同時に受け取ってもよい
戻り値は、
次のように 変数宣言と同時 に受け取ることもできます。
int result = nextYear(baseYear, 10);どちらの書き方でも意味は同じなので、
コードの読みやすさで使い分けるとよいでしょう。
まとめ:戻り値は「受け取ってこそ意味がある」
戻り値は、
- 1つだけ返せる。
- return 文で即座に関数を終了させる。
- 受け取らなければ捨てられる。
という特徴を持っています。
関数を使うときは、
この関数は何を返すのか?
その結果をどう使うのか?
を意識すると、
プログラムの設計が一段レベルアップします。
