Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопрос 2-36-шпора.doc
Скачиваний:
20
Добавлен:
15.04.2015
Размер:
485.38 Кб
Скачать

Вопрос 24 Объявление и инициализация массивов

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

Массивом называется набор данных одного и того же типа, собранных под одним именем. Каждый элемент массива определяется именем массива и порядковым номером элемента, который называ­ется индексом. Индекс всегда является целым числом.

Основная форма объявления массива в программе:

Тип < имя массива > [размер 1] [размер 2]....[размер п];

Чаще всего используются одномерные массивы:

Тип <имя массива> [размер];

Тип - базовый тип элементов (int, float, char).Размер - количество элементов одномерного массива. В языке Си индекс всегда начинается с 0. Первый элемент -массива всегда имеет индекс 0. Например, если мы объявили массив int а [100], это значит массив содержит 100 элементов - от а [0] до а [99]. Для одномерного массива легко подсчитать, сколько байт в памяти будет занимать этот массив. N Килобайт = < размер базового типа > * < количество элемен­тов >.Язык Си допускает двумерные массивы. Их можно назвать как: массив одномерных массивов. Двумерный массив int a[3][4] можно представить в виде таблички:

Номер столбца - второй индекс (

)

Номер строки — первый индекс 1 0) __

А [0] [0]

А[0][1]

А [0] [2]

А [0] [3]

А[1][0]

А [1] [1]

А[1][2]

А[1][3]

А [2] [0]

А [2] [1]

А [2] [2]

А [2] [3]

В памяти ЭВМ массив располагается непрерывно по строкам, т. е.

а [0] [0], а [0] [1],.......а [0] [3], а [1] [0], а [1] [1],.....а [2] [3].

Следует помнить, что память для всех массивов, которые определены как глобальные, отводится во время компиляции, и сохраняется всё время, пока работает программа. Часто двумерные массивы используются для работы с таблицами, содержащими текст.

т

U

R

В

0

В

А

S

I

с

\0

т

U

R

В

О

С

+

+

\0

Инициализацию массивов можно производить разными спосо­бами.

Первый способ.

float arr [6] = {1.1, 2.2, 3.3, 4.0, 5.0, 6}; // одномерный массив

int a [3] [5] = {1,2, 3,4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}

Второй способ.

а[0] [0] = 1; а [0] [1] = 2; а [0] [2] = 3; а [0] [3] = 4

а [0] [4] = 5; а [0] [5] = 6; а [0] [6] = 7; а [0] [7] = 8 и т. д.

Многомерные массивы, в том числе и двумерные, можно ини­циализировать, рассматривая их как массив массивов.

Инициализации:

int a[3] [5] = {1,2,3,4,5,6,7,8,9, 10, 11, 12, 13, 14, 15}; и

int а [3] [5] = {{1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}};

эквиваленты. Количество инициализаторов не обязательно i должно совпадать с количеством элементов массива. Если инициализаторов меньше, то оставшиеся элементы массива не определены.

В тоже время инициализации:

int а [3] [5] ={1,2, 3, 4, 5, 6, 7, 8, 9, 20, 11}; и

inta[3] [5] = {{1,2,3}, {4,5,6,7,8}, {9,10, 11}};

различны.

Соответствующие массивы будут заполнены следующим! образом:

В первом случае:

1

2

3

4

5

6

7

8

9

10

11

Во втором случае:

1

2

3

4

5

6

7

8

9

10

11

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