関数
関数とは、プログラムをひとまとまりにして書いたものです。
プログラムは、スタートアップ処理を実行し、エントリーポイントを登録した関数に処理を飛ばします。
パソコン上で動作するC言語プログラムでは、その関数がmainという名前の関数となります。
組み込みシステムのC言語プログラムでは、パワーオンリセット関数として登録した名前の関数が実行されるので、mainという名前の関数でなくてもよくなります。そういった意味で、パソコン上で動作するC言語プログラムとしましたが、一般的に、C言語プログラムには、main関数が必要となります。
C言語プログラムでは、main関数以外にライブラリとして提供される関数を利用できたり、独自の関数を作成し、使用することができます。
これらの関数を組み合わせて、プログラムを作成し、目的の処理を実行します。
なぜ関数を作るのか
なぜ関数を作るのでしょうか?
主な理由は4つあると思います。
1つ目は、可読性の向上です。関数を使うことでプログラムが見やすくなります。
main関数に長々とプログラムを記述するよりも機能ごとに処理を分割して呼び出すプログラムとしたほうがわかりやすいプログラムとなります。
2つ目は、再利用の容易化です。プログラムでは、同じ処理を複数個所で実行する場合がよくあります。そのような場合、同じ処理を二度記述するのではなく、関数化することで、プログラムの再利用を容易にします。
3つ目は、保守性の向上です。機能ごとに分割され、うまく設計されたプログラムは、関数間の結合が疎になっています。関数間の結合が疎であればあるほどプログラムは修正しやすく、修正時の不具合も低減できます。また、2つ目で上げた再利用性によっても保守性の向上が図れます。
4つ目は、処理の隠蔽です。関数化されていれば、処理のアルゴリズムを知る必要がなくなります。いわゆる処理のブラックボックス化です。必要知識は、関数の機能と入出力になります。つまり、何をする関数なのかを理解して、関数を動かすために必要なデータを用意し、結果として返ってくるデータを受け取ればよいとなります。
以上の4項目が関数を作成する主な理由であると考えています。
関数の書き方
関数は次のように書きます。
戻り値の型 関数名( 引数の型 引数名 )
{
【処理】
return( 戻り値 );
}
引数は、入力として与えるデータです。複数の変数を与えることができます。
ポインタ変数を引数とすることで、出力側のデータとして扱うこともできます。
戻り値は、出力として受け取るデータです。1つ以下の値を受け取ることができます。
関数の使い方
関数は、プロトタイプ宣言を記述して使用します。
プロトタイプ宣言は、次のような形で宣言します。
戻り値の型 関数名( 引数の型 引数名 )
プログラムは、宣言部と関数部に分かれていて、宣言部にプロトタイプ宣言を記述した上で、関数部に関数の実体定義を定義し、関数を使う箇所で関数呼び出しを行います。
加算関数の例
ここで、足し算をする関数の例を記載します。
変数aに「1」、変数bに「2」を代入し、加算関数add1で「1+2」の計算をさせています。
#include <stdio.h>
int add1(int x,int y);
main()
{
int a,b,ans;
a = 1;
b = 2;
ans = add1(a,b);
printf("ans = %d\n",ans);
printf("end\n");
}
int add1(int x,int y)
{
int p;
p = x + y;
return(p);
}
プログラムを実行すると次のように加算結果の「3」が返ってきます。
C:\prog>add_test
ans = 3
end
コメント