Определяемые типы
Описания, содержащие "спецификатор класса памяти" typedef, не вызывают отведение памяти, но определяют идентификаторы, которые можно в дальнейшем использовать наравне с ключевыми словами, обозначающими базовые или производные типы.
имя_определяемого_типа: идентификатор
В пределах области видимости описания, содержащего typedef, каждый введенный с его помощью идентификатор становится синтаксически эквивалентным ключевому слову, обозначающему тип, сопоставленный идентификатору по правилам, описанным в пункте Смысл описателей. Например, после описаний
typedef int MILES, *KLICKSP; typedef struct { double re,im; } complex;
конструкции
MILES distance; extern KLICKSP metricp; complex z, *zp;
являются корректными описаниями; тип distance есть int, тип metricp - "указатель на int", тип z - специфицированная структура. zp - указатель на такую структуру.
Конструкция typedef не вводит совершенно новых типов, а только синонимы типов, которые в принципе можно специфицировать и другим способом. В приведенном выше примере можно считать, что distance имеет в точности такой же тип, как и любой другой объект int.