スライドショー

【C言語入門】returnで関数の戻り値を返す方法

C言語には、関数の値を返す時などに使われるreturn文というのがあります。

return文はそれ以外にもmain関数の最後にも書かれています。

この記事では、return文について、

 

  • return文の意味
  • return文を使って戻り値を返す方法
  • ポインタを使って複数の戻り値を返す方法
  • return文で条件によって関数の処理を終了させる方法
  • 「return 0」と「return 1」の意味


 

 

などの応用的な使い方についても解説していきます。

return文とは

return文とは、関数を実行した結果とともに、関数を終了したいときに呼ばれる文のことです。

return文によって関数の呼び出し元にデータを渡すことを、値を返すと言います。また、その時に関数が返す値のことを戻り値と言います。

return文は次のように書きます。

return 戻り値;

また、戻り値をなしにしたいときは

return ;

のように書きます。

return文で戻り値を返す方法

return文は、関数が何らかの値を返す時や、関数の処理を終わらせたいときなどに使われます。

例えば、"Samurai"という文字列を返して欲しい場合は、次のように使用します。

#include <stdio.h>

char *SamuraiEngineer() {
    return "Samurai";
}

int main(void) {
    printf("%s\n", SamuraiEngineer());

    return 0;
}

実行結果:

Samurai

このように、return文を使うことで、文字列などの値を返すことができます。

ポインタを使って複数の戻り値を返す方法

ここまで、return文を使って関数から1つ戻り値を受け取ることができました。

では、複数の戻り値が欲しい場合には、どうすれば良いのでしょうか?

実はC言語は、return文で複数の戻り値を渡すことができません。配列を使う方法もありますが、今回はポインタを使って解決します。

ポインタとは、変数がどこにいるのかを指し示す変数のことです。ポインタの値が変わると、ポインタが指す値も変わります。

アドレスを引数として使うことで、元々の変数の値も変えることができます。それにより、複数の戻り値を得ることができます。

例えば、2つの値を交換する時に使うことができます。

#include <stdio.h>

void swap(int *x, int *y) {
    int tmp;

    tmp = *x;
    *x = *y;
    *y = tmp;
}

int main(void) {
    int num1 = 123;
    int num2 = 456;

    printf("交換前:num1 = %d, num2 = %d\n", num1, num2);
    swap(&num1, &num2);
    printf("交換後:num1 = %d, num2 = %d\n", num1, num2);

    return 0;
}

実行結果:

交換前:num1 = 123, num2 = 456
交換後:num1 = 456, num2 = 123

このように、ポインタを使うことで擬似的に複数の値を返すことができます。

ポインタについて詳しく知りたい方は、こちらの記事で解説しているのでぜひ確認してください!

【C言語入門】ポインタのわかりやすい使い方(配列、関数、構造体)
更新日 : 2019年4月23日

return文で条件によって関数の処理を終了させる方法

return文には、値を返すだけではなく、関数の処理を終了させることもできます。これを使うことで、条件によって関数の処理を途中で終了させることができます。

例えば、入力された値によって関数の処理を変えたいときに使われます。

以下のサンプルコードでは、値が1~10の範囲にあるかどうかを調べています。

#include <stdio.h>

char *checkNum(int num) {
    if (num > 10) {
        return "値が大きすぎます。";
    }

    if (num < 1) {
        return "値が小さすぎます。";
    }

    return "1~10の値です";
}

int main(void) {
    int num;

    num = 3;
    printf("num = %d, 結果:%s\n", num, checkNum(num));

    num = 100;
    printf("num = %d, 結果:%s\n", num, checkNum(num));

    num = -100;
    printf("num = %d, 結果:%s\n", num, checkNum(num));

    return 0;
}

実行結果:

num = 3, 結果:1~10の値です
num = 100, 結果:値が大きすぎます。
num = -100, 結果:値が小さすぎます。

このように、return文を使うことで、条件によって、関数の処理を終了させることができます。

「return 0」と「return 1」の意味とは?

さて、これまでのコードを見ていると、main関数にもreturn文が書かれているのがわかると思います。

main関数の最後には、

return 0;

と書かれています。

このreturnの意味は、0を返せば正常終了、0以外なら異常終了という意味です。

return文とexit関数の違い

return文で、関数の処理を終了させることができました。

しかし、exit関数を使っても処理を終了させることができます。

return文では、関数の処理を終了し、値を返すことができるのに対して、exit関数とは、呼び出された瞬間に、プログラム全体の処理を終了させる関数です。

実際に、サンプルコードで確認して見ましょう。

#include <stdio.h>
#include <stdlib.h>

char *exitMessage() {
    printf("正常終了します。\n");
    exit(0);
}

int main(void) {
    exitMessage();
    printf("ここは表示されません。\n");

    return 0;
}

実行結果:

正常終了します。

このように、exit関数を使うことで、プログラム全体の処理を終了させることができます。

関数の使い方総まとめ

この記事では関数の戻り値を返すreturn文について解説しましたが、関数の様々な使い方については次の記事で詳しく解説しているので、ぜひ確認してください。

【C言語入門】関数の作り方、呼び出し方(宣言、引数、戻り値)
更新日 : 2019年4月24日

まとめ

いかがでしたか?

今回は、return文について解説しました。

return文はC言語の基本ですのでぜひ覚えてください。

もし、return文を使って値を返す方法を忘れてしまったらこの記事を確認してください!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

MoritaIssei

ご閲覧いただきありがとうございます。森田一世と申します。プログラマーとしてRaspberry piを使ったり、記事を作成しています。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説