C言語の基本構造

C言語は関数言語であると一般的に言われます。

その意味について少し考察してみました。

まずはじめに最小のC言語プログラムは以下のようになります。

/****最小のプログラム****/
main(){}
/****おしまい****/


たった一行のプログラムですが、ちゃんと動きます。
もう少し厳密さを重視するなら関数の定義にしたがう必要があります。
すなわち
戻り値の型 関数名(引数リスト)
の形式を踏襲することが大切です。


すると上のプログラムは以下の用に書き直すことができます。

/****最小のプログラム****/
int main(void){
return 0;
}
/****おしまい****/


さらにこのプログラムに何もしない関数を定義してやると以下のようになります。
/****最小のプログラム****/
int main(void){
return 0;
}
function1(){}
function2(){}
/****おしまい****/

非常に面白いことは、有名なおまじない#includeを用いなくてもc言語のプログラムは成立するということです。
ただし、このままでは画面に出力ができません(IOの機能がない)。そこで、APIを用いて出力してやる必要があります。
これを行うには#includeによって、stdio.hという標準入出力のためのヘッダーファイルを読み込んでやる必要があります。

では#includeを読み込んでみましょう。

/****最小のプログラム****/
#include<stdio.h>
int main(void){
printf("Hello!\n");
return 0;
}
function1(){}
function2(){}
/****おしまい****/


うん。実に美しい。
C言語は関数がダラダラと連なった構造を取っていて、適宜ヘッダーファイルを読み込むことにより、標準入出力を一とした特殊な(一般的には基本的な作業ではあるが)を行うことを可能にしているのである。

スッキリした。

勉強しているプログラム言語の大きな枠組みを理解すると、気持ちがいいですし、設計していくうえで大変見通しが良くなると思います。