第8章 C言語の関数 ~ 関数の作り方とモジュール分け ~
以前、「関数を自分で作ることができる」というくだりがあったのを、覚えている人はいますか?
実は printf( ) や strcpy( ) などの関数も、どこぞの誰かによってC言語で作られた関数(注20)なのです。 しかし、今更皆さんが printf( ) や strcpy( )のような関数を作ってもしょうがないですね。既に用意されてるものがあるのですから。では、何故関数を作ることを習わなければいけないのでしょう。
次頁の記述を打ち込んでみて下さい(ちょっと、わざとらしいプログラムですが、勘弁してください)。
— リスト21–
#include <stdio.h> void main() { int tanka; int num; tanka = 2000; num = 4; printf("合計は、%dです。\n", tanka * num); tanka = 1500; num = 5; printf("合計は、%dです。\n", tanka * num); tanka = 3000; num = 2; printf("合計は、%dです。\n", tanka * num); }
とても簡単なプログラムでしたね。
では、このプログラムを、関数を用いたプログラムに書き直してみましょう。 関数の記述方法は、以下のようになっていて、本来はmain 関数と何ら変わりありません。
戻り値の型 関数名( 引数の型 引数名, 引数の型 引数名 ) { いろいろと処理を記述する }
もちろん、引数が必要でなければ、今まで出てきた main 関数のように、 ( ) とだけしても構いません。 それでは、リスト21を次のように変更してみてください。
— リスト21`–
#include <stdio.h> void main() { int tanka; int num; tanka = 2000; num = 4; goukeiPrint(tanka, num); (1) tanka = 1500; num = 5; goukeiPrint(tanka, num); tanka = 3000; num = 2; goukeiPrint(tanka, num); } /** * 単価と個数から、合計を計算して表示する関数 (2) */ void goukeiPrint(int tanka, int num) { printf("合計は、%dです。\n", tanka * num); }
(2)の部分が、関数 goukeiPrint を作る記述です。
しかし、このプログラムをコンパイルしようとしたら、 コンパイラから何か注意されませんでしたか? goukeiPrint なんて関数は知らないと言われたかもしれません。
Cコンパイラは、あなたのファイルを前から順番に読み込んで、翻訳していきます。 (1)の部分で、関数 goukeiPrint を printf や strcpy と同じにように呼んでいますね。 しかし、Cコンパイラはこの時点では、goukeiPrint などという関数があることを知りません。 関数 goukeiPrint の実体は、(2)の部分にあるからです。
このコンパイルエラーは、以下の二つの方法で回避することができます。
1)(2)の部分を main 関数よりも前に記述する。
2)関数の宣言を行う。
1)でも今の部分は問題ありませんが、より高度なプログラムを作れるように、 ここでは2)の方法を使いましょう。
リスト21を次のように変更してください。
< 前のページへ 次のページへ >-
IS 559680 / ISO27001
認証範囲 本社、芝大門オフィス情報セキュリティ基本方針 -
個人情報保護方針
個人情報の取扱いについて
保有個人データ又は
第三者提供記録に関する
事項の周知について
特定個人情報の取扱いについて -
FS 671851 / ISO9001
認証範囲 本社、芝大門オフィス品質方針