Лекции по C++

Информация - Компьютеры, программирование

Другие материалы по предмету Компьютеры, программирование

структуры представлены переменной c типа char и указателем pf на величину типа float. Третий элемент с именем next об"являются как указатель на описываемую структуру sample.

В пятом примере об"является двумерный массив поименованный screen, элементы которого имеют структурный тип. Массив состоит из 2000 элементов и каждый элементэто отдельная структура, состоящая из четырех элементов типа bit-fild с именами icon, color, underline и blink.

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

Синтаксис: 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.

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