節では、関数に数値を渡す方法を解説しましたが、
今回は、その逆に関数から数値を返す方法を解説します。
実は、sum関数は、すでに数値を返すように作られています。
とりあえず、前節のsum関数を眺めてみてください。
注目ポイントは2ヶ所です。int sum(int min,int max) { printf("%d\n",(min + max) * (max - min + 1) / 2); return 0; }
もうひとつのポイントは、return文です。
今まで、特に何も考えずに関数の最後には必ずつけてきましたが、
実は、このreturn文には、数値を返すという機能があります。
つまり、このsum関数は、int型の数値 0 を返すことになっていたのです。
このような、関数から帰ってくる数値を、戻り値(関数値)と呼ぶことがあります。
呼び出し元で戻り値を知りたい場合には、変数に代入する必要があります。
[ 戻り値 ]
関数から返される数値。
計算結果か、あるいはエラーの有無を示す数値であることが多い。
この戻り値を使えば、計算結果を表示するだけではなく、value = sum(50,100);
このプログラムの実行結果は次の通りになります。#include <stdio.h> int sum(int,int); /* プロトタイプ宣言 */ int main(void) { int value; value = sum(50,100); printf("%d\n",value); return 0; } int sum(int min,int max) { int num; num = (min + max) * (max - min + 1) / 2; return num; }
先ほどと結果は変わりませんが、今回のsum関数は計算結果を返すだけであり、
3825
前節で解説した引数においては、複数の引数を使うことが可能でした。
では、当然、戻り値でも・・・、と言いたいのですが、そうはいきません。
なんと、戻り値は1つだけしか返すことが出来ないのです。
そうなっている以上、戻り値は1つであきらめるしかありません。
実は、引数で数値を返すワザもありますが、これは後回しにします。
引数の場合、呼び出すときに必ず指定する必要がありましたが、
戻り値は無視してしまってもかまいません。
実を言えば、printf関数も、何文字表示したかという情報を返してきますが、
はっきり言って、そんなのどうでもいい情報なので、無視してきたのです。
なお、戻り値にも、intの他にdoubleなど、好きな型を使うことが出来ます。
また、戻り値を返さない関数を作ることも可能です。
その場合、引数名の前に、voidを指定します。
ごくごく単純な関数であれば、戻り値が不要なことは意外に多いのです。