Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語の関数の戻り値(return)とは?意味と使い方をわかりやすく解説

関数とは、特定のタスクを実行するために設計された、自己完結型のコードブロックのことです。プログラムを機能単位に分割することで、コードの見通しが良くなり、保守性も向上します。

C言語における関数のメリット

  • 同じ処理を何度でも再利用できる(再利用性)
  • プログラム全体の長さを短縮できる
  • 不具合のある関数を特定・分離しやすい
  • トップダウン式のモジュールプログラミングを実現しやすい

関数の基本例

以下は、C言語で関数を定義して呼び出す基本的なプログラムです。

#include<stdio.h>
/* 関数プロトタイプ宣言 */
myfunc();
main(){
    myfunc();
}
/* 関数定義 */
myfunc(){
    printf("Hello \n");
}

戻り値とは何か

計算処理を行う関数では、一般的に「関数が何らかの値を返す」ことを期待します。ただし、関数が引数を受け取るかどうかは任意です。

  • 戻り値の型は、int、float、char など任意の型を指定できます。
  • 関数の戻り値の型を省略した場合、デフォルトでは整数型(int)として扱われます。

return文を使った例

次のプログラムは、2つの数値の合計を返す関数の例です。

int total (){
    int a,b,c;
    a=10;
    b=20;
    c=a+b;
    return c; // cの値を返す(結果が出力される)
}

実行結果

このプログラムを実行すると、次の結果が出力されます。

30

なお、上記のように2ステップで書く代わりに、

c=a+b;
return c;

次のように1ステップで簡潔に記述することもできます。

return a+b;

戻り値を返し忘れた場合の挙動

関数内で値を返すのを忘れると、多くのCコンパイラでは警告メッセージが表示されます。この警告は「戻り値を返すべきである」ことを知らせるものです。警告はプログラムの実行を妨げませんが、エラーが発生した場合は実行が停止します。

main関数とreturn 0

main関数では、通常プログラムの最後に return 0; を記述します。

int main(){
    ---
    ---
    return 0;
}
  • 整数型のデフォルトの戻り値は 0 です。
  • main() 関数内に return 0 やその他の値を明示的に記述しなかった場合でも、自動的に 0 が返されます。
  • 関数で int 型の値を返す場合は、関数の宣言部(ヘッダー)で戻り値の型を明示しておくことが推奨されます。

関数からの戻りのポイント

関数は return 文によって、1つの値のみを返します。戻り値を扱う際には、以下の点に注意しましょう。

  • 関数内で変数に行った変更は、その関数内でのみ有効(ローカル)です。呼び出し元の関数の変数が、呼び出された関数の処理によって影響を受けることはありません。
  • 呼び出し元の関数は、呼び出された関数が返す値を無視することもできます。たとえば、printf や scanf の戻り値は通常無視されます。
  • 関数が返した値は、より複雑な式の中で使用したり、変数に代入して利用したりすることができます。
  1. C言語のstrcmp()関数とは?文字列比較の基本と使い方を徹底解説

    C言語の標準ライブラリ関数 int strcmp(const char *str1, const char *str2) は、ポインタ str1 が指し示す文字列と、str2 が指し示す文字列を比較するための関数です。C言語において、文字型の配列は「文字列」と呼ばれます。まずは文字列の基本的な扱い方から確認していきましょう。文字列の宣言文字列(文字配列)の宣言は以下のように行います。char stringname [size];例えば、char string[50]; と宣言すれば、最大50文字の長さを持つ文字列を格納できます。文字列の初期化文字列の初期化には、主に次の2つの方法があります。1

  2. C言語のstrcpy()関数とは?基本構文と使い方をわかりやすく解説

    C言語のライブラリ関数 char *strcpy(char *dest, const char *src) は、src が指し示す文字列を dest にコピーするための関数です。 C言語では、文字の配列のことを「文字列」と呼びます。 文字列の宣言 文字列(文字配列)の宣言は、以下の形式で行います。 char stringname[size]; 例えば char string[50]; と宣言すると、最大50文字の文字列を格納できる配列が確保されます。 文字列の初期化 文字列の初期化には、主に以下の2つの方法があります。 1. 文字定数を使う方法 char string[10] = {H,