Основы алгоритмического языка С++
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
µнем 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-ти элементов, каждый из которых является указателем на величину типа char.
4.4.6. Объявление указателей
Синтаксис:
;
Объявление указателя определяет имя переменной типа указатель и тип объекта, на который указывает эта переменная. Декларатор- задает тип объекта, который может быть базового типа, типа структуры или совмещения.
Переменная типа указатель может указывать также на функции, массивы и другие указатели. Более полная информация о типах указателей дана в разделе 4.3.2. "Составные деклараторы".
Если указатель не используется до определения типа структуры или совмещения, то он может быть объявлен ранее этого определения. Такие объявления допускаются, поскольку компилятору не требуется знать размера структуры или совмещения, чтобы распределить память под переменную типа указатель. Указатель может быть объявлен посредством использования тега структуры или совмещения (смотри ниже пример 4).
Переменная, объявленная как указатель, хранит адрес памяти. Размер памяти, требуемый для адреса, и смысл адреса зависит от данной конфигурации машины. Указатели на различные типы не обязательно имеют одну и ту же длину.
Для некоторых реализаций используются специальные ключевые слова near, far и huge, чтобы мод?/p>