関数とは
関数を一言で表すと、処理を一つにまとめて名前をつけたもの といえます。
もしかしたら、数学で出てきた関数を思い浮かべる人もいるかもしれませんが、ほぼ同義語です。
そして実は、みなさんはすでにいくつかの関数を使用しています。
そう、文字列を表示する printf関数 や、最初に実行する場所を表す main関数です。
※main 関数の詳細は後述します。
C言語は、この関数を組み合わせてプログラムを組み上げていく言語といえます。
処理を関数化することで、
- 処理に名前をつけたり
- 処理を再利用したり
- 細かく分割したり
することができるため、大変便利な機能です。
ココがポイント
関数とは処理のまとまりに名前をつけたもの。C言語は関数を組み合わせてアプリケーションを作成する。
関数の構成
関数は、以下の要素で構成されます。
- 関数の名前
- 関数の処理
- 関数に渡す値(引数)
- 関数から返ってくる値(戻り値)
という要素で構成され、以下の順で処理されます。
- 関数に対してある値(引数)を渡し
- 関数の中で処理され
- 処理された値が戻ってくる

例として、文字列を表示する printf() 関数の構成を紹介します。
- 関数名 : printf
- 関数の処理:文字列を表示する
- 関数に渡す値:表示する文字列
- 関数から返ってくる値:なし
いかがでしょうか?
なんとなく理解できたでしょうか?
関数の宣言
関数は、偉い誰かが作成したものを使用することもできますし、自分で作成することもできます。
自分で関数を作成することを、関数を宣言すると言います。
以下のような形で関数を宣言します。
戻り値の型 関数名( 引数1の型 引数1の名前, 引数2の型 引数2の名前... )
{
// 関数の処理
}
例として、2つの整数の平均を返す関数を宣言してみます。
int Average( int n1, int n2 )
{
return ( n1 + n2 ) / 2;
}
のような形です。
関数の呼び出し
関数の呼び出しは、すでに printf で行っている通りですが、以下の形で呼び出すことができます。
関数名( 引数1..., 引数2... );
上記で作成した平均を求める関数を呼び出してみます。
Average( 2, 4 );
関数の戻り値の受け取り
関数を呼び出したのであれば、引数を受け取るのも目的の一つです。
以下のようにして、引数を受け取ることができます。
int avg = Average( 2, 4 ); // Average の戻り値が avg に代入される
main 関数について
main 関数とは、C言語の処理を最初に実行する場所を表します。
プログラムは上から下に実行されますが、一番最初はどこから実行されるべきかをマシンに理解してもらうため、main という名前の特別な関数が存在しているというわけです。
手元にあるプログラムを見てみましょう。
以下のような部分があるはずです。
int main(int argc, const char * argv[]) {
// 全ての処理はここから始まる
}
これが、 main 関数を表しています。
この世界のあらゆるC言語で作成されたアプリケーションは、一つの例外もなく、この main 関数から実行されています。
今のプログラムも、この main 関数の先頭から実行されているのです。
ココがポイント
main 関数は最初に実行される場所。ここから処理が始まる。