Информатика и технология программирования

         

Определение типа данных (спецификатор typedef)


Спецификатор typedef позволяет в явном виде определить производный тип данных и использовать его имя в программе как обозначение этого типа, аналогично базовым ( int, char ...). В этом смысле он похож на определение структуры, в котором имя структуры (со служебным словом struct ) становится идентификатором структурированного типа данных. Спецификатор typedef позволяет сделать то же самое для любого типа данных.

Спецификатор typedef имеет синтаксис контекстного определения типа данных, в котором вместо имени переменной присутствует имя вводимого типа данных. Рассмотрим пример:


// Синтаксис контекстного определения типа для переменной PSTR


typedef char *PSTR; // PSTR - имя производного типа данных.

Тип данных PSTR определяется в контексте как указатель на символ (строку).


PSTR p,q[20],*pp;





Переменная p типа PSTR, массив из 20 переменных типа PSTR и указатель типа PSTR представляют собой указатель на строку, массив указателей на строку и указатель на указатель на строку.


long l;
*((PSTR)&#38l + 2) = 5;



Указатель на переменную типа long преобразуется к типу указатель на строку.

В принципе, использование оператора typedef характеризует скорее стиль программирования, нежели насущную необходимость. Дело в том, что один и тот же тип данных в Си может использоваться для работы с различными структурами данных (особенно это касается указателей). Например, тип char* может использоваться для обозначения:



-указателя на отдельный символ (адрес символа);



-указателя на массив символов (строку);



-указателя на область байтов (начальный адрес).

С помощью typedef программистами могут устанавливать соглашения по обозначению тех или иных типов и связанных с ними структур данных. Например, тип PSTR используется для обозначения указателя на строку символов, заканчивающуюся символом '\0'. Заметим, что в этом случае никаких дополнительных действий по проверке корректности структур данных транслятором не производится: тип данных PSTR только улучшает читаемость программы.



Содержание раздела