関数はC言語の制御単位

関数は、他の関数の中から呼び出すことができます。
そして、呼び出しをした時には、関数の実行結果を得ることができます。
その実行結果を「戻り値」と言います。
まずは、改めて関数の書き方を見てみましょう。

戻り値の型 関数名 ( 引数 )
{
}

関数の戻り値は、一つしか返せません。
そして、その戻り値の型はあらかじめ決められた型でないといけません。
サンプルプログラムを見てみましょう。

スポンサーリンク

サンプルプログラム

ソースファイル名:main.c

実行方法

上のソースを書き写して実行してください。

関数とは一つの機能をもった制御単位

「関数、引数」の項目で、関数は

  1. 長いプログラムを書く時、一つの関数が冗長になるのを防ぐために使う
  2. 特定の処理に特化したプログラムを作るときに活躍する
とお伝えしましたが、戻り値は2の方の使い方で大活躍します。

上のサンプルプログラムでは、関数 Add を作ってそれを main から呼び出しています。
add は、二つの引数を入れたら足し算をして返す機能を持った関数になっています。

このように、C言語の関数とは、呼び出せば一つの答えを返してくれる制御単位としての使い方も可能です。
そして、先にも言いましたが、関数を実行した結果、返してくれる値のことを「戻り値」と言います。
呼び方は「もどりち」です。

戻り値の返し方

関数が返す戻り値は、あらかじめ決められた型で返します。
今回のサンプルプログラムでは、

int add( int arg1, int arg2 )

となっていて、赤文字の int の部分が戻り値の型を表します。
今回は int 型です。

戻り値を返すには、関数の終了部分で return を付け、返す値を指定します。
サンプルプログラムでは、

return value;

となっていて、計算した結果の入った value の値を返しています。
戻り値は int 型になっているので、変数 value も int 型にしないといけません。

戻り値の受け方は、変数の代入と同じです。

a = add( 10, 5 );

というように、関数の結果を a に代入するように記述します。
戻り値を受け取る変数は、戻り値と同じ型でないといけません。
今回は、add は int 型を返す関数なので、a も int 型で宣言しています。

戻り値を受け取らないとどうなるの?

今回のサンプルプログラムで、add を呼び出している部分、

a = add( 10, 5 );

を、以下のように変えて関数の実行結果を受け取らなくしたらどうなるでしょうか?

add( 10, 5 );

答えは何も起こりません。
もちろん a に結果は入りませんが、結果を受け取らなければそのまま破棄されるので誤動作をする心配はありません。

戻り値で使う void とは何?

これまでたくさんのサンプルプログラムを書いてきました。 その中で、毎回 main の戻り値として使われていた void というものがあるのですが、これは何なのでしょうか?
実は、戻り値で使う void は、

戻り値はありません。

という意味になります。
戻り値がないので、関数の結果を返す return も必要ありません。
関数の終了として、明示的に return を付けたい時は

return;

と書いて、戻り値を書かないようにすれば大丈夫です。

スポンサーリンク