Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Использование зарезервированного слова typedef для объявления синонимов типов




Описатели

Использование спецификаторов

Спецификаторы типа

Любой объявляемый объект должен иметь тип, определяемый одним или несколькими спецификаторами типа. Спецификаторы типа могут иметь следующий вид:

· последовательность спецификаторов встроенного (фундаментального) типа.

· имя перечисления.

· typedef-имя.

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

· спецификаторы класса памяти, квалификаторы типа, спецификаторы типа.

· спецификаторы класса памяти, спецификаторы типа, квалификаторы.

Первый формат является традиционным, однако второй формат в последнее время все чаще используется.

 

Основным элементом каждого описателя является объявляемое имя. Этот элемент является обязательным. Кроме того, в объявитель может входить дополнительная информация, относящаяся к типу. В состав дополнительных компонентов могут входить классификаторы типа и некоторые операторы языка Си:

* - оператор разыменования (для объявления указателей см. пункты 17 и 38).

() – оператор функция (для объявления функций см. пункт 37).

[] – оператор индексирования (для объявления массивов см. пункт 39).

Оператор * в объявителе используется (по отношению к объявляемому имени) в качестве префикса, а операторы () и [] – в качестве суффикса. Можно провести некоторую аналогию между использованием операторов в объявителях и выражениях. Суффиксные операторы «сильнее» связаны с именем, чем префиксные.

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

int n, m;
// ПС – спецификатор типа int, СО – два идентификатора перемен
// ных: n и m

double *px;
// ПС – спецификатор типа double, СО – идентификатор переменной
// px и префиксный оператор разыменования *


 

Отметим, что typedef не позволяет объявлять новые типы. Его назначение состоит в том, чтобы назначать имя для уже существующего типа. В зависимости от вида существующего типа целесообразно различать три случая:

· встроенный (фундаментальный) тип.

· перечисление и структура.

· все прочие типы; их характерной особенностью является отсутствие у типа имени.

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

Для перечислений и структур применение typedef позволяет устранить из имени типа зарезервированное слово. Для перечислений таким именем является enum, а для структур – struct.

Для всех оставшихся случаев применение рассматриваемого способа позволяет упростить структуру новых объявлений.

Приведем ряд примеров.

Пример 1. Синоним для встроенного типа. Рассмотрим некоторый фрагмент кода, в котором будет объявлен синоним (integer) для встроенного типа int.

typedef int integer;

После объявления этого синонима у программиста появляется альтернатива, существо которой состоит в том, что наряду с обычным именем типа int, он имеет возможность пользоваться новым именем.

int n;
integer m;

Бессистемное использование этих двух альтернативных возможностей пользы не приносит. Смысл в объявлении синонима в том случае, когда программист откажется от стандартного имени int, и будет использовать альтернативное integer.

integer n, m;

При этом появляется возможность его оперативного изменения. Например, если окажется, что тип int следовало бы заменить другим типом. Например, типом double int. такая замена может быть осуществлена редактированием объявления имени integer.

typedef double int integer;
integer n, m;

Теперь переменные n и m имеют тип double int.

Пример 2. Синоним для типа, у которого нет своего имени. Обратимся к программному коду, приведенному ниже. В этом коде объявлен синоним ptr_dbl для существующего типа double*. Теперь программист имеет альтернативные возможности для объявления указателей на объекты типа double. Это и продемонстрировано в приведенном ниже коде.

typedef double* ptr_dbl;
double *pb1;
ptr_dbl pb2;

 




Поделиться с друзьями:


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


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



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




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