#include の意味
(さまざまな関数を使えるようにする。⇒プロトタイプ宣言)

これまで、printfやscanf関数を使ってきました。
実を言うとこれらの関数を使うためには、そのプロトタイプ宣言と呼ばれるものが必要です。
プロトタイプ宣言とは、宣言以降の記述で、その関数が使えるようにする働きをします。
例えばprintfなら次のようなものです。

	int printf(const char *, ...);

(正確なprintfのプロトタイプ宣言は、開発ツールであるコンパイラによって違います)
関数と呼ばれるものは、これまで使ってきたprintfやscanf以外にもさまざま存在するのですが、 それら関数を利用するごとに、このようなプロトタイプ宣言が必要になります。
そして、それを記述する代わりに、 そのプロトタイプ宣言の記述があるファイルを取り込む指示が#includeなのです。 次のような意味になっています。

これにより、stdio.hファイルの中にある プロタイプ宣言や、変数、型などが使えるようになる仕組みになっているのです。
なお、< >の中で指示するファイル名は、開発環境のなかで決っている ディレクトリの中に存在していなければなりません。
この拡張子が、.hのファイルはヘッダーファイルと呼ばれています。

printfを使う時に、  #include <stdio.h>の記述を忘れると、 コンパイラは警告(warning)を出すのが普通です。例えば次のようなものです。

warning : 'printf' は定義されていません。int 型の値を返す外部関数と見なします。

警告は、
『文法的に間違いがある。しかしソースファイルの翻訳が可能だったので、コンパイルしました。』
と言う意味のコンパイラが出すメッセージです。 これはビルドした時に出すメッセージですが、 プログラマは、警告のメッセージがでないように注意すべきものとなります。

ヘッダーファイルは、関数の機能ごとにたくさん存在します。以下に例を示します。

その他にも、たくさんのヘッダーファイルがありますが、必要に応じて説明します。