第13回|作ったドリンクを「受け取る」話|C言語の戻り値をやさしく理解する

当サイトでは、コンテンツの一部に広告を掲載しています。
第13回|作ったドリンクを「受け取る」話|C言語の戻り値をやさしく理解する

はじめてのC言語 | 第13回

目次

はじめに|作ったはずなのに、手元にない

これまでミナちゃんは、C言語で関数を勉強して、
中で計算や処理をすることができるようになりました。

ところが、ある日こんな疑問が浮かびます。

「ちゃんと計算できているけど、
その結果を、どうやって使えばいいんだろう?」

これは、戻り値をまだ意識していないときに、
多くの人が感じる疑問です。

関数は、キッチンのような場所

関数の中は、カフェでいうと キッチン のような場所です。

  • 中で作業はできる
  • でも、外からは見えない
  • 外に伝わるのは「渡されたもの」だけ

C言語の関数も同じです。
中でどんな計算をしていても、
何も返さなければ、外からは分かりません。

作っているけど、返していない例

まずは、よくあるコードを見てみましょう。

#include <stdio.h>

void make_drink(void) {
    int price = 500;
    price = price + 100;
}

この関数は、

  • 値段を計算している
  • でも、何も返していない

という状態です。

price は関数の中だけで使われ、
関数が終わると一緒に消えてしまいます。

カフェで言うと、
ドリンクは作ったけれど、カウンターに出していない
そんな状態です。

return は「できました」の合図

では、作った結果を外に渡してみましょう。

#include <stdio.h>

int make_drink(void) {
    int price = 500;
    price = price + 100;
    return price;
}

ここで大切なのは、この一行です。

return price;

この return は、

  • 関数の仕事が終わったことを伝える
  • 作った結果を外に渡す

という役割を持っています。

カフェで言えば、
「できました」と言って、
ドリンクを差し出す瞬間です。

返すだけでは、まだ半分

でも、返しただけでは、まだ完成ではありません。

#include <stdio.h>

int make_drink(void) {
    int price = 600;
    return price;
}

int main(void) {
    make_drink();
    return 0;
}

このコードでは、

  • 関数は値を返している
  • でも、誰も受け取っていない

戻り値は、そのまま消えてしまいます。

これは、
カウンターにドリンクを置いたのに、
誰も受け取らなかった

という状態です。

受け取って、はじめて意味を持つ

では、戻り値をちゃんと受け取ってみましょう。

#include <stdio.h>

int make_drink(void) {
    int price = 600;
    return price;
}

int main(void) {
    int result = make_drink();
    printf("ドリンクの値段は %d 円です\n", result);
    return 0;
}

ここでは、

  • make_drink() が値を返す
  • result がそれを受け取る
  • 受け取った値を使って表示する

という流れになっています。

C言語では、

型 変数 = 関数();

この形が、
戻り値を受け取る基本の形です。

戻り値があると、次につなげられる

受け取った値は、
そのまま次の処理に使うことができます。

int price = make_drink();

if (price > 500) {
    printf("少し高めのドリンクです\n");
}

これで、

  • 計算する
  • 結果を受け取る
  • その結果で判断する

という流れが生まれます。

プログラムが、
少し「考えている」ように見えてくる瞬間です。

全体のコードを見てみる

  1 #include <stdio.h>                                      
  2 
  3 int make_drink(void) {
  4     int price = 600;
  5     return price;
  6 }
  7 
  8 int main(void) {
  9     int price = make_drink();
 10 
 11     if (price > 500) {
 12         printf("少し高めのドリンクです\n");
 13     }
 14 
 15     printf("ドリンクの値段は %d 円です\n", price);
 16     return 0;
 17 }
 18

実行すると、こうなります

少し高めのドリンクです
ドリンクの値段は 600 円です

関数は「約束」になる

ユニ先生は、こう言います。

「この関数は、
何を受け取って、
何を返すのか。
それが分かれば、安心して使えるよ」

戻り値がはっきりしている関数は、

  • 使う人が迷わない
  • 間違いに気づきやすい
  • 何度も使える

信頼できるメニューになります。

おわりに|作る → 返す → 受け取る

C言語の return は、
ただの命令ではありません。

  • 作ったものを
  • 外に渡して
  • 次の処理につなげる

ための、大切な動作です。

作るだけでは、まだ途中。
受け取って、はじめて完成です。

次回予告

受け取ったドリンクを、どう使う?
次は、
戻り値を条件に使う話
へ進みます。

さらに学びたいあなたへ

📘 用途ごとに選ぶ Linux のおすすめ本

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe 編集部

UNIX Cafe は、むずかしい言葉をできるだけ使わず、物語を読むような気持ちで気軽に学べる場所です。
プログラミングは、アイデアをコンピューターに伝えるための「ことば」。
簡単な単語と文法を覚えることで、誰でもターミナルから便利なコマンドを使えるようになります。
コーヒーを片手に立ち寄るような気持ちで、やさしいプログラミングの世界を、
そっとのぞいてみてください。

目次