第11章 関数

Cプログラムは「関数」という小さなプログラムの集まりで構成されます。 main() も実は関数ですし、printf() や scanf() も関数です。

この章では、「ユーザ関数」と呼ばれる、製作者側で作成する関数について学習します。


11−1.関数の基本型

ある規模以上のプログラムを main()だけで作成すると、ステップ数の多い理解しにくいプログラムができあがってしまいます。 ですから、プログラムはいくつかの関数に分けて作成する方が、コンパクトで理解しやすいものとなります。 また、同じような処理を複数の個所で行っている場合、関数としてその処理をまとめてしまうと全体のステップ数も減ることになります。

(1)関数を用いた場合の処理の流れ

まず、関数を用いた場合、プログラムはどのような順番で実行されるのかを下図に示します。 下図では main()から wa() という関数が呼ばれるようになっています。

  1. main()の先頭から wa()までを実行。
  2. wa()に処理が飛ぶ。

    このとき wa()にデータ a, b を渡す。

    これを実引数(じつひきすう)と呼ぶ。

  3. wa()は渡された a, b を x, y に代入して処理を実行。

    この x, y を仮引数(かりひきすう)と呼ぶ。

  4. main()関数に戻る。

    このとき、データzの値を返す。このzをリターン値と呼ぶ。

  5. リターン値を sum に代入して、main()の残りを実行。

(2)関数の使用例

次に実際に上の例をプログラムで記述してみます。

このように、関数を使用する場合には、

  1. ユーザ関数のプロトタイプ宣言を main() よりも前に記述する。 この宣言は、コンパイラに関数の情報を与える。 この宣言を行うとコンパイラは関数の引数と返却値のチェックを行う。
  2. main()の中(ユーザ関数の中でもよい)で、ユーザ関数を呼ぶ。
  3. main()に続けてユーザ関数の本体部を記述する。 (ユーザ関数を別ファイルとして作成する場合もありますが、このホームページでは扱いません。)

(3)各宣言の説明

プロトタイプ宣言、関数、return、void について説明します。

【プロトタイプ宣言】

コンパイラに、関数名、return型、引数の型を知らせる

return型  関数名(引数型と仮引数名の並び);

【関数】

return型 関数名(引数型と仮引数名の並び)
{
	関数内変数の宣言
	実行文
	return文;
}

【return】

  1. 値を返す必要があるとき

    return 値; が一般的

    return 式; 直接式でも可

  2. 値を返す必要のないとき

    return;

 値を返す必要のない、2.の「return;」は関数の最後でリターンする場合は通常省略されます。
  ただし、処理の途中でリターンする場合は省略はできません。
  なお、省略した場合には、関数終了の } でリターンします。
void func(void)
{
	処理
	if (条件) return;	⇒	省略不可
	
	処理
	return;		⇒	省略可
}

【void】

  1. 値を返さない return型に用いる
  2. 引数が無い場合に用いる
void func(void)
 1.    2.
 関数は一般に引数によって値を受け取り、returnで返却値を返すものですが、
中には引数が必要無い関数や返却値の無い関数も存在します。
そのような場合、「引数が無い」ことや「return値が無い」ことを
明示するために「void」は用いられます。

次に示す「えんしゅう」では、問1 に「return値、引数が共にない関数」、
問2 に「引数はあるが return値の無い関数」を用意してみました。
簡単ですからやってみてください。
演習

【補足】

main関数もOS に対し戻り値を返却します。そのため、return型とreturn文を記述し、

int main(void)
{
	処理
	return 0;
}

とします。返却値の0は正常終了を示しています。

◆◆前ページ  ▲TOP▲  次ページ◆◆

banner
「初心者のためのポイント学習C言語」
Copyright(c) 2000-2004 TOMOJI All Rights Reserved