Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Перечислимые типы

Переименование типов.

Типы, определяемые пользователем.

Лекция 8

Встроенные типы данных, указатели и массивы образуют основу для представления и обработки информации на языке С. Подлинная же сила языка состоит в том, что он позволяет программисту определять наиболее подходящие для конкретной задачи типы.

Любому типу в С можно присвоить простое имя или переименовать его. Это делается с помощью ключевого слова 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 является просто средством упрощения записи операторов объявления переменных.

Ключевое слово enum позволяет описать перечислимый тип, представляющий переменные, которые могут принимать значения из заданного набора целых именованных констант. Определение перечислимого типа выглядит так:

enum имя_этикетка {имя_константы [= значение],...};

Последовательность перечисленных констант автоматически нумеруется от 0 до N, где N<=255. Значение равно по умолчанию нулю для первого из перечислителей (так обычно называют определяемые в enum константы). Любая другая константа, для которой значение не указано, принимается равной значению предыдущей константы плюс единица.

Например:

enum Status

{

Success = 1,

Wait, Proceed,

Error = -1

};

В операторе enum после закрывающей фигурной скобки можно сразу объявить несколько переменных данного типа:

enum имя_этикетка {список_констант} переменная[,...];

Например, переменная Svetofor, которая может иметь три значения света сфетофора, может быть объявлена:

 

enum typsvet {red, green, blue} Svetofor;

Нужно иметь в виду, что имя-этикетка не является настоящим именем типа. Именем типа будет в вышеприведенном примере enum typsvet. Соответственно переменные должны объявляться как

enum typsvet Svet1, Svet2;

 

Однако всегда можно воспользоваться ключевым словом typedef и ввести для перечисления подлинно новое имя. Обычно это делается сразу:

typedef enum этикетка {список_констан} имя_типа;

Предыдущее объявление можно переписать так:

typedef enum Status {

Success = 1,

<== предыдущая лекция | следующая лекция ==>
Строки | Структуры
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 424; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.