Каждый Идентификатор — это имя константы. Все идентификаторы в списке констант оператора enum должны быть уникальными. Если константе явным образом не присваивается Константное выражение (чаще всего это число), то первому идентификатору присваивается значение 0, следующему — значение 1 и т. д.

Пример объявления переменной rab_ned и типа week для переменных, совместимых с переменной rab_ned, выглядит следующим образом:

enum week {SUB = 0,     /* константе SUB присвоено значение 0 */

                  VOS = 0,     /* константе VOS присвоено значение 0 */

                  POND,        /* константе POND присвоено значение 1 */

                  VTOR,        /* константе VTOR присвоено значение 2 */

                  SRED,        /* константе SRED присвоено значение 3 */

                  HETV,        /* константе HETV присвоено значение 4 */

                  PJAT         /* константе PJAT присвоено значение 5 */

                 }  rab ned; 

Идентификатор, связанный с Константным выражением, принимает значение, задаваемое этим Константным выражением. Результат вычисления Константного выражения должен иметь тип int и может быть как положительным, так и отрицательным. Следующему идентификатору в списке, если этот Идентификатор не имеет своего Константного выражения, присваивается значение, равное константному выражению предыдущего идентификатора плюс 1. Использование констант должно подчиняться следующим правилам:

— объявляемая переменная может содержать повторяющиеся значения констант;

— идентификаторы в списке констант должны быть отличны от всех других идентификаторов в той же области видимости, включая имена обычных переменных и идентификаторы из других списков констант;

— Имена типов перечислений должны быть отличны от других имен типов перечислений, структур и объединений в этой же области видимости;

— значение может следовать за последним элементом списка констант перечисления.

Во втором формате для объявления переменной перечислимого типа используется готовый тип переменной, уже объявленный ранее. Например: enum week rabl;

К переменной перечислимого типа можно обращаться при помощи указателей. При этом необходимо заранее определить тип переменной, на которую будет ссылаться указатель. Это может быть сделано, как описывалось выше или при помощи оператора typedef. Например:

typedef enum {SUB = 0,     /* константе SUB присвоено значение 0 */

                      VOS = 0,     /* константе VOS присвоено значение 0 */

                      POND,        /* константе POND присвоено значение 1 */

                      VTOR,        /* константе VTOR присвоено значение 2 */

                      SRED,         /* константе SRED присвоено значение 3 */

                      HETV,        /* константе HETV присвоено значение 4 */

                      PJAT          /* константе PJAT присвоено значение 5 */

                    }  week; 

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

Указатели

Указатель — это переменная, которая может содержать адрес другой переменной. Указатель может быть использован для работы с переменной, адрес которой он содержит. Для инициализации указателя (записи в него начального адреса) можно использовать идентификатор переменной, при этом в качестве идентификатора может выступать имя переменной, массива, структуры, литеральной строки.

При объявлении переменной-указателя необходимо определить тип объекта данных, адрес которых будет содержать эта переменная, и идентификатор указателя с предшествующей звездочкой (или группой звездочек). Формат объявления указателя:

Спецификатор типа [Модификатор] '*' Описатель.

Спецификатор типа задает тип объекта и может быть любого основного типа, структуры или объединения (об этих типах данных будет сказано ниже). Примеры объявления указателей:

Перейти на страницу:

Поиск

Похожие книги