Расположение в памяти

Массивы могут быть следующих видов:

1. Локальные. Располагаются в стеке. Например,

main(){

int A[10];

//…..

}

2. Статические. Располагаются в области данных, глобальных и статических переменных. Например,

main(){

static int A[10];

//…..

}

3. Глобальные. Располагаются в области данных, глобальных и статических переменных. Например,

int A[10];

main(){

//…..

}

4. Дальние глобальные. Располагаются в дальней области глобальных переменных. Например,

far int A[10];

main(){

//…..

}

Двумерные массивы располагаются в памяти по строкам. Начальную строку массива называют нулевой строкой.

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

Например, трехмерный массив int A[3][4][5] располагается в памяти слоями A[0][…][…], …, A[2][…][…].

Каждый слой, как двумерный массив, располагается по строкам. Например, A[0][0][…], …, A[0][3][…].

Массивы могут размещаться только в пределах одного сегмента, то есть общий размер массива в байтах не превышает 64К.

Обращение к элементу массива

Элементы массива могут стоять в обеих частях операции присваивания, то есть являются объектами Lvalue.

Задание элемента k-мерного массива реализуется последовательным применением операций индексации:

x[i1][i2]...[ik],

где ij - целое выражение, при этом 0<=ij<=nj -1, где nj-1 - максимальное значение j-го индекса массива. Например:

page[5]

line[i+j-1]

big[i][j]

Язык Си не проверяет выход индекса массива за диапазон. Обращение к несуществующему элементу массива является не синтаксической, а “хорошо скрытой” логической ошибкой. Она может привести к непредсказуемым результатам.

Операция индексации является левоассоциативной операцией, то есть выполняется в выражении слева направо. Поэтому при обращении к элементу массива вначале выполняется левая операция индексации []. К полученному результату применяется вторая операция индексации [] и т.д.

Инициализация массивов

Инициализация массивов может быть полной и частичной.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: