Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Alg1.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
101.84 Кб
Скачать

28. Одномерные массивы.

О дномерный массив — массив, с одним параметром, характеризующим количество элементов одномерного массива. Фактически одномерный массив — это массив, у которого может быть только одна строка, и n-е количество столбцов. Столбцы в одномерном массиве — это элементы массива. На рисунке 1 показана структура целочисленного одномерного массива a. Размер этого массива — 16 ячеек.

Заметьте, что максимальный индекс одномерного массива a равен 15, но размер массива 16 ячеек, потому что нумерация ячеек массива всегда начинается с 0. Индекс ячейки – это целое неотрицательное число, по которому можно обращаться к каждой ячейке массива и выполнять какие-либо действия над ней (ячейкой).

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

29. Многомерные массивы.

До этого момента мы рассматривали одномерные массивы, которыми не всегда можно ограничиться. Допустим, необходимо обработать некоторые данные из таблицы. В таблице есть две характеристики: количество строк и количество столбцов. Также и в двумерном массиве, кроме количества элементов массива, есть такие характеристики как, количество строк и количество столбцов двумерного массива. То есть, визуально, двумерный массив — это обычная таблица, со строками и столбцами. Фактически двумерный массив — это одномерный массив одномерных массивов.

В объявлении двумерного массива, также как и в объявлении одномерного массива, первым делом, нужно указать:

  • тип данных;

  • имя массива.

После чего, в первых квадратных скобочках указывается количество строк двумерного массива, во вторых квадратных скобочках — количество столбцов двумерного массива. Двумерный массив визуально отличается от одномерного второй парой квадратных скобочек. Рассмотрим пример объявления двумерного массива. Допустим нам необходимо объявить двумерный массив, с количеством элементов, равным 15. В таком случае двумерный массив может иметь три строки и пять столбцов или пять строк и три столбца.

// пример объявление двумерного массива:

int a[5][3];

// инициализация двумерного массива:

int a[5][3] = { {4, 7, 8}, {9, 66, -1}, {5, -5, 0}, {3, -3, 30}, {1, 1, 1} };

Адресом ячейки двумерного массива является имя массива, номер строки и номер столбца.

30. Имена и объявления массивов.

Что объявить массив, требуется указать тип данных, имя массива и размер массива в квадратных скобках:

dataType name[size];

Например, нам нужно объявить массив целых чисел, размером 10 элементов:

int array[10]

Кроме того, можно объявить n-мерный массив, для этого необходимо использовать n квадратных скобок, по одной паре для каждого измерения. Следующий пример объявляет, 2-мерный массив:

int array[5][6];

В этом массиве 5 строк и 6 столбцов, в сумме массив array содержит 30 элементов типа int.

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

Чтобы получить доступ к отдельному элементу массива, нужно после имени массива указать в квадратных скобках индекс (номер) элемента. Индексы элементов массивов начинаются с 0 и заканчиваются размером массива минус 1:

name[index];

В этой строке мы получаем доступ к index элементу массива name. Если индекс — 0, то мы получаем доступ к первому элементу массива. Например:

int array[5];

array[0] = 11;

В этом примере выполняется инициализация первого элемента массива array значением 11. Обратите внимание, если вы попытаетесь получить доступ к arrау[5], у вас ничего не получится, так как это за пределами массива.

Чтобы получить доступ к n-мерному массиву, используйте тот же подход, просто для каждого измерения явно указывайте индекс:

int array[5][5];

array[2][4] = 0;

В этом примере в массиве array элементу, в первой строке и третьем столбце присваивается значение 0.

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

С позволяет инициализировать глобальные и локальные массивы на этапе объявления. Стандартный вид инициализации массива аналогичен инициализации переменных, как показано ниже:

спецификатор типа имя_массива [размерN] ... [размер1] = {список значений};

Список значений - это разделенный запятыми список констант, совместимых по типу со спецификатором типа. Первая константа помещается в первый элемент массива, вторая - во второй и так далее. За последней константой списка нет запятой. Обратим внимание, что точка с запятой следует за }. В следующем примере 10-элементный целочисленный массив инициализируется числами от 1 до 10:

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

Это означает, что i[0] получит значение 1, i[9] - 10.

Массивы символов, содержащие строки, допускают удобную инициализацию в виде

char имя_массива [размер] = "строка";

При данной инициализации нулевой терминатор автоматически добавляется к концу строки. Нижеприведенный фрагмент кода инициализирует строку str фразой «hello»:

char str[6] = "hello";

Это можно также записать:

char str [ 6 ] = {'h', 'е', 'l', 'l', 'o', '\0'};

Обратим внимание, что в данной версии следует явным образом указать нулевой символ. Поскольку все строки в С оканчиваются нулевым символом, следует убедиться, что массив достаточно длинный для его вмещения. Именно поэтому str состоит из 6 символов, хотя «hello» имеет только 5 символов.

Многомерные массивы инициализируются так же, как и одномерные. Следующий пример инициализирует sqrs числами от 1 до 10 и их квадратами:

int sqrs[10] [2] =

{

1, 1

2, 4,

3, 9,

4, 16,

5, 25,

6, 36,

7, 49,

8, 64,

9, 81,

10, 100

};

Здесь sqrs[0][0] содержит 1, sqrs[0][1] содержит 1, sqrs[1][0] содержит 2, sqrs[1][1] содержит 4 и так далее.

При инициализации многомерных массивов можно добавить фигурные скобки вокруг каждого измерения. Это так называемая субагрегатная группировка. Ниже приведен еще о дня способ записи предыдущего объявления:

int sqrs[10][2] =

{

{1, 1},

{2, 4},

{3, 9},

{4, 16},

{5, 25},

{6, 36},

{7, 49},

{8, 64},

{9, 81},

{10, 100}

};

При использовании субагрегатной группировки в случае неуказания требуемого количества инициализаторов для данной группы остальные члены установятся в 0 автоматически.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]