Переименование типов
Любому типу в С можно присвоить простое имя или переименовать его. Это делается с помощью ключевого слова typedef:
typedef тип новое_имя_типа;
или
typedef тип новое_имя_типа [размер_массива][...];
для типов-массивов. (Квадратные скобки здесь означают не необязательность синтаксического элемента, а “настоящие” скобки.) Кроме того, мож-
но вводить имена для типов указателей на функцию и т. п. Формально описать все возможные typedef довольно сложно, поэтому мы этого делать не будем. Вообще следует руководствоваться таким правилом: если вы объявляете объект как принадлежащий к определенному в typedef типу, имя объекта нужно подставить вместо нового_имени_типа. Убрав typedef, вы получите эквивалентное объявление объекта. Вот примеры:
typedef short Arrlndex;
// Псевдоним для short.
typedef char MessageStr[80];
// Имя типа для массивов
// char[80].
typedef int *IPtrFunc(void);
// Функция, возвращающая
// указатель на int.
typedef int (*IFuncPtr)(void);
// Указатель на функцию,
// возвращающую int.
В общем, typedef является просто средством упрощения записи операторов объявления переменных.