Массив – это совокупность элементов одного типа, который обращается с помощью общего имени. Доступ к отдельному элементу массива может осуществляться с помощью индекса, в С все массивы состоят из соприкасающихся участков памяти. Наименьший адрес соответствует первому элементу массива. Наибольший адрес соответствует последнему элементу. Массивы могут иметь одну или несколько размерностей. Стандартный вид объявления одномерного массива.
Тип имя_переменной [размер];
В С массивы должны определяться однозначно, чтобы компилятор мог выделить для них место памяти. Здесь тип объявляет базовый тип массива и является типом каждого элемента массива. Параметр "размер" определяет, сколько элементов содержит массив. Размер должен задаваться только const-н целым выражением. Не допускается использования переменных при описании размера массива. У всех массивов первый элемент имеет индекс ноль (0).
Пример:
Если написать char K [10];, то будет объявлен массив из 10-ти элементов, причем эти элементы адресуются индексами от 0...до 9.
Пример:
int a [20];
Определяет массив из 20-ти элементов. Причем под этот массив будет отведено 2*20, т.е. 40 байтов памяти ЭВМ. Размер, обычно указываемый в квадратных скобках, после имени массива при его описании может отсутствовать.
Пример:
int b [ ];
int b [ ] = { 1,2,3 };
В первом случае память под массив не выделяется. Выделяется только память под указатель. Во втором случае память под массив отводится в соответствии с приведенным списком начальном значении, т.е. 3*2=6 байт. Обращение к элементу массива осуществляется с помощью операции индексации
имя [ выражение ];
где имя - имя массива.
Выражение, заключенное в квадратные скобки после имени массива является индексом массива и определяет порядковый номер элемента в массиве. Выражение должно быть целого типа. С - компилятор не контролирует случая выхода индекса за пределы границ массива. Имя массива, используемое без последующих квадратных скобок, представляет адрес начала массива. Двухмерный массив представляется, как одномерный элементы которого тоже являются массивами.
Пример:
int b [5] [10];
Это объявление задает 2-х мерный массив. Аналогично можно установить число измерений. Элементы 2-х мерного массива хранятся по строкам, т.е. если переходить по ним в порядке их расположения в памяти, то быстрее всего изменяется крайний правый индекс.