МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Лекции по C++

    оно может также определять класс памяти переменной, как это описано в

    разделе 4.6. Имя переменной- это идентификатор, заданный в об"явлении.

    Спецификатор типа задает имя определяемого типа данных.

    Можно определить имена различных переменных в том же самом

    об"явлении, задавая список идентификаторов, разделенных запятой. Каждый

    идентификатор списка именует переменную. Все переменные, заданные в

    об"явлении, имеют один и тот же тип.

    Примеры

    int x; /* Example 1 */

    unsigned long reply, flag /* Example 2 */ double order;

    /* Example 3 */

    В первом примере об"является простая переменная x. Эта пе-

    ременная может принимать любое значение из множества значений,

    определяемых для типа int.

    Во втором примере об"явлены две переменные: reply и flag. Обе

    переменные имеют тип unsigned long.

    В третьем примере об"явлена переменная order, которая имеет тип

    double. Этой переменной могут быть присвоены величины с плавающей запятой.

    Объявление перечисления

    Синтаксис: enum[]{}[,...];

    enum[,...];

    Об"явление перечисления задает имя переменной перечисления и

    определяет список именованных констант, называемый списком перечисления.

    Значением каждого имени списка является целое число. Переменная

    перечисления принимает значение одной из именованных констант списка.

    Именованные константы списка имеют тип int. Та-

    ким образом, память соответствующая переменной перечисления- это память,

    необходимая для размещения отдельной целой величины.

    Объявление перечисления начинается с ключевого слова enum и

    имеет две формы представления. В первой форме представления имена

    перечисления задаются в списке перечисления .

    Опция - это идентификатор, который именует тип перечисления,

    определенного в .

    Переменную перечисления именует . В об"явлении может быть

    описана более чем одна переменная перечисления.

    Во второй форме используется тег перечисления, который ссы-

    лается на тип перечисления. В этой форме об"явления список перечисления не

    представлен, поскольку тип перечисления определен в другом месте. Если

    задаваемый тег не ссылается на уже определенный тип перечисления, или если

    именуемый тегом тип находится вне текущей видимости, то выдается ошибка.

    имеет следующий синтаксис:

    [=][,

    [= переопределяет последовательность

    значений, заданных по умолчанию. Идентификатор, следующий перед записью

    = принимает значение, задаваемое этим константным

    выражением. Константное выражение имеет тип int и может быть отрицательным.

    Следующий идентификатор в списке ассоциируется с величиной, равной

    +1, если он явно не задается другой величиной.

    Перечисление может содержать повторяющиеся значения идентификаторов, но

    каждый идентификатор должен быть уникальным. Кроме того, он должен быть

    отличным от всех других идентификаторов перечислений с той же видимостью.

    Например, двум различным идентификаторам null и zero может быть задано

    значение 0 в одном и том же перечислении. Идентификаторы должны быть

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

    имена обычных переменных и идентификаторы других перечислений. Теги

    перечислений должны быть отличны от тегов перечислений, тегов структур и

    совмещений с той же самой видимостью.

    Примеры:

    /**************** Example 1 ***************/

    enum day {

    saturday,

    sunday = 0,

    monday,

    tuesday,

    wednesday,

    thursday,

    friday

    } workday;

    /***************** Example 2 ***************/

    enum day today = wednesday;

    В первом примере определяется тип перечисления, поименованный day и

    об"является переменная workday этого типа перечисления. С saturday по

    умолчанию ассоциируется значение 0. Идентификатор sunday явно

    устанавливается в 0. Оставшиеся идентификаторы по умолчанию принимают

    значение от 1 до 5.

    Во втором примере переменной today типа enum day присваивается значение

    из перечисления. Заметим, что для присваивания используется имя константы

    из перечисления. Так как тип перечисления day был предварительно

    об"явлен, то достаточно сослаться только на тег перечисления.

    Объявления структур

    Синтаксис: struct[]{}[,...];

    struct[,...];

    Об"явление структуры задает имя типа структуры и специфицирует

    последовательность переменных величин, называемых элементами структуры,

    которые могут иметь различные типы.

    Об"явление структуры начинается с ключевого слова struct и имеет

    две формы представления, как показано выше. В первой форме

    представления типы и имена элементов структуры специфицируются в

    списке об"явлений элементов . - это

    идентификатор, который именует тип структуры, определенный в

    списке об"явлений элементов.

    Каждый задает имя переменной типа структуры. Тип

    переменной в деклараторе может быть модифицирован на указатель к

    структуре, на массив структур или на функцию, возвращающую структуру.

    Вторая синтаксическая форма использует тег- структуры для

    ссылки на тип структуры. В этой форме об"явления отсутствует список

    об"явлений элементов, поскольку тип структуры определен в другом

    месте. Определение типа структуры должно быть видимым для тега, который

    используется в об"явлении и определение должно предшествовать

    об"явлению через тег, если тег не используется для об"явления

    указателя или структурного типа typedef. В последних случаях

    об"явления могут использовать тег структуры без предварительного

    определения типа структуры, но все же определение должно находиться в

    пределах видимости об"явления.

    Список об"явлений элементов - это одно

    или более об"явлений переменных или битовых полей. Каждая

    переменная, об"явленная в этом списке, называется элементом

    структурного типа. Об"явления переменных списка имеют тот же самый

    синтаксис, что и об"явления переменных обсуждаемых в этой главе,

    за исключением того, что об"явления не могут содержать

    спецификаторов класса памяти или инициализаторов. Элементы структуры

    могут быть любого типа: основного, массивом, указателем,

    совмещением или структурой.

    Элемент не может иметь тип структуры, в которой он появляется.

    Однако, элемент может быть об"явлен, как указатель на тип структуры,

    в которую он входит, позволяя создавать списочные структуры.

    Битовые поля

    Об"явления битовых полей имеют следующий синтаксис:

    []:; Битовое

    поле состоит из некоторого числа бит, специфициро-

    ванных константным выражением- . Для бито-

    вого поля спецификатор типа должен специфициро-

    вать беззнаковый целый тип, а константное выражение должно быть

    неотрицательной целой величиной. Массивы битовых полей, указатели на

    битовые поля и функции, возвращающие битовые поля не допускаются.

    Идентификатор- именует битовое поле. Неименованное битовое

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

    назначение: оно гарантирует, что память для следующей переменной

    об"явления будет начинаться на границе int.

    Идентификаторы элементов внутри об"являемой структуры должны быть

    уникальными. Идентификаторы элементов внутри разных структур могут

    совпадать. В пределах той же самой видимости теги структур должны

    отличаться от других тегов (тегов других структур, совмещений и

    перечислений).

    Переменные (элементы) структуры запоминаются последовательно в том же

    самом порядке, в котором они об"являются: первой переменной соответствует

    самый младший адрес памяти, а последнейсамый старший. Память каждой

    переменной начинается на границе свойственной ее типу. Поэтому могут

    появляться неименованные участки между соседними элементами.

    Битовые поля не располагаются на пересечении границ, обявленных для них

    типов. Например, битовое поле, об"явленое с типом unsigned int,

    упаковывается или в пространстве, оставшимся от предидущего unsigned int

    или начиная с нового unsigned int.

    Примеры

    /**************** Example 1 ****************/

    struct {

    float x,y;

    } complex;

    /**************** Example 2 *****************/

    struct employee {

    char name[20];

    int id;

    long class;

    } temp;

    /**************** Example 3 ******************/

    struct employee student, faculty, staff;

    /**************** Example 4 ******************/ struct sample {

    char c;

    float *pf;

    struct sample *next;

    } x;

    /***************** Example 5 ******************/

    struct {

    unsigned icon : 8;

    unsigned color : 4; unsigned underline : 1; unsigned

    blink : 1;

    } screen[25][80];

    В первом примере об"является переменная с именем complex типа

    структура. Эта структура состоит из двух элементов x и y типа float. Тип

    структуры не поименован.

    Во втором примере об"является переменная с именем temp типа структура.

    Структура состоит из трех элементов с именами name, id и class. Элемент

    с именем name- это массив иэ 20- ти элементов типа char. элементы с именами

    id и class- это простые переменные типа int и long соответственно.

    Идентификатор employee является тегом структуры.

    В третьем примере об"явлены три переменных типа структура с именами:

    student, faculty и staff. Каждая из структур состоит из трех элементов

    одной и той же конструкции. Элементы определены при об"явлении типа

    структуры с тегом employee в предыдущем примере.

    В четвертом примере об"является переменная с именем x типа

    структура. Первые два элемента структуры представлены переменной c

    типа char и указателем pf на величину типа float. Третий элемент с

    именем next об"являются как указатель на описываемую структуру

    sample.

    В пятом примере об"является двумерный массив поименованный screen,

    элементы которого имеют структурный тип. Массив состоит из 2000

    элементов и каждый элементэто отдельная структура, состоящая из

    четырех элементов типа bit-fild с именами icon, color, underline и

    blink.

    Об"явление совмещений

    Синтаксис: union[]{}[,...];

    union[,...];

    Об"явление совмещения определяет имя переменной совмещения и

    специфицирует множество переменных, называемых элементами совмещения,

    которые могут быть различных типов. Переменная с типом совмещения

    запоминает любую отдельную величину, определяемую набором элементов

    совмещения.

    Об"явление совмещения имеет тот же самый синтаксис, как и

    об"явление структуры, за исключением того, что она начинается с

    ключевого слова union вместо ключевого слова struct. Для об"явления

    совмещения и структуры действуют одни и те же правила, за исключением

    того, что в совмещении не допускаются элементы типа битовых полей.

    Память, которая соответствует переменной типа совмещение,

    определяется величиной для размещения любого отдельного элемента

    совмещения.

    Когда используется наименьший элемент совмещения, то переменная

    типа совмещения может содержать неиспользованное пространство. Все

    элементы совмещения запоминаются в одном и том же пространстве памяти

    переменной, начиная с одного и того же адреса. Запомненные значения

    затираются каждый раз, когда присваивается значение очередного

    элемента совмещения.

    Примеры:

    /************** Example 1 ********************/

    union sign {

    int svar;

    unsigned uvar;

    } number;

    /************** Example 2 ********************/

    union {

    char *a, b;

    float f[20];

    } jack;

    /*************** Example 2 *******************/

    union {

    struct {

    char icon;

    unsigned color : 4;

    } window1, window2, window3, window4;

    } screen[25][80];

    В первом примере об"является переменная типа совмещения,

    поименованная number. Список элементов совмещения состоит из двух

    об"явлений переменных: svar типа int и uvar типа unsigned. Это

    об"явление позволяет запоминать текущее значение number в знаковом или

    беззнаковом виде. Тип совмещения поименован идентификатором sign.

    Во втором примере об"является переменная типа совмещения с именем jack.

    Список элементов об"явления состоит из трех об"явлений: указателя a на

    величину типа char, переменной b типа char и массива f из 20 элементов типа

    float. Тип совмещения не поименован.

    Память, распределенная для переменной jack, равна памяти,

    распределенной под массив f, поскольку f самый большой элемент

    совмещения.

    В третьем примере об"является двумерный массив совмещений с именем

    screen. Массив состоит из 2000 об"ектов. Каждый об"ектэто отдельное

    совмещение из четырех элементов: window1, window2, window3, window4, где

    каждый элемент- это структура. В любое заданное время каждый об"ект

    совмещения поддерживается одним из четырех возможных элементов типа

    структура. Таким образом, переменная screen- это композиция четырех

    возможных "windows".

    Об"явление массива

    Синтаксис: []; [];

    Здесь квадратные скобки- это терминальные символы. Об"явление массива

    определяет тип массива и тип каждого элемента. Оно может определять

    также число элементов в массиве. Переменная типа массив рассматривается

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

    в двух синтаксических формах, указанных выше. Декларатор

    задает имя переменной. Квадратные скобки, следующие за декларатором,

    модифицируют декларатор на тип массива. Константное

    выражение

    , заключенное в квадратные скобки, определяет число

    элементов в массиве. Каждый элемент имеет тип, задаваемый спецификатором

    типа , который может специфицировать любой тип, исключая

    void и тип функции.

    Во второй синтаксической форме опущено константное выражение в

    квадратных скобках. Эта форма может быть использована только тогда, когда

    массив инициализируется или об"явлен как формальный параметр или об"явлен

    как ссылка на массив, явно определенный где-то в программе.

    Массив массивов или многомерный массив определяется путем задания

    списка константных выражений в квадратных скобках, следущего за

    декларатором:

    []

    []...

    Каждое константное выражение- в квадратных скобках

    определяет число элементов в даннном иэмерении

    массива, так что об"явление двумерного массива содержит два константных

    выражения, трехмерного- три и т.д. Если многомерный массив об"является

    внутри функции или если он инициализируется либо об"является как

    формальный параметр или об"является как ссылка на

    массив, явно определенный где- то в программе, то первое константное

    выражение может быть опущено.

    Массив указателей на величины,заданного типа, может быть определен

    посредством составного декларатора, как было описано в разделе 4.3.2.

    Типу массив соответствует память, которая требуется для размещения

    всех его элементов. Элементы массива с первого до последнего запоминаются в

    последовательных возрастающих адресах памяти. Между элементами массива в

    памяти разрывы отсутствуют. Элементы массива запоминаются друг за другом

    построчно. Например, массив, содержащий две строки с тремя столбцами

    каждая,

    char A[2][3]

    будет запомнен следующим образом. Сначала запоминаются три столбца

    первой строки, затем элементы трех столбцов второй строки. Смысл этого в

    том, чтобы последний индекс был более быстрым. Чтобы сослаться на

    отдельный элемент массива, нужно использовать индексное выражение, которое

    описано в разделе 5.2.5.

    Примеры:

    /*************** Example 1 ******************/

    int scores[10], game;

    /*************** Example 2 ******************/

    float matrix[10][15];

    /*************** Example 3 ******************/

    struct {

    float x,y;

    } complex[100];

    /*************** Example 4 *******************/

    char *name[20];

    В первом примере об"является переменная типа массив с именем scores

    из 10 элементов типа int. Переменная с именем game об"явлена как простая

    переменная целого типа.

    Во втором примере об"является двумерный массив с именем matrix.

    Массив состоит из 150-ти элементов типа float.

    В третьем примере об"является массив структур. Массив состоит из 100

    об"ектов. Каждый об"ект массива представляет собой структуру, состоящую

    из двух элементов.

    В четвертом примере об"явлен массив указателей. Массив состоит из 20-ти

    Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.