typedef C言語の特徴であるデータを区別する型をプログラマが分かりやすい名称に定義し直すことができます。そのために用意されたキーワード(予約語)が typedef です。
■型定義(Type Definition)
typedef T my_type;
識別子my_type が型T を意味することになります。
* キーワード typedef は,便宜上,記憶域クラス指定子に含まれている。[C99, 6.7.1, 3] この結果,上は「式文」ではなく「宣言」に分類される。
次の場合,BOOLEAN は int を意味します。
typedef int BOOLEAN; BOOLEAN true = 1; BOOLEAN false = 0;
true や false は int型です。次の WEEK は要素数 7 の intの配列を意味します。
typedef int WEEK[7];
WEEK Jan1st = {4, 5, 6, 7, 8, 9, 10};
オブジェクト Jan1st は要素数 7 の int型配列です。
typedef struct list {
int n;
char str[20];
struct list *next;
} LIST;
LIST *head;
LIST は struct list型を意味し,したがって,ポインタ head は struct list型へのポインタです。