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

5

Язык c. Лекция 7

1. Массивы

1.1. Объявление и использование массивов

Массив — последовательность элементов одинакового типа. Элементы массива пронумерованы по порядку (в языке C нумерация начинается с нуля). Чтобы сослаться на конкретный элемент, нужно указать его номер. Номер элемента массива называют индексом.

При объявлении массива указывают общее количество элементов. Например,

double x[20];

означает, что x — массив из 20 элементов типа double. Первый элемент массива имеет индекс 0, последний — 19.

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

x[5] = x[0]*x[2] – 2.5;

присваивает элементу с индексом 5 (т.е. шестому по порядку элементу массива) произведение элементов с индексами 0 и 2 (т.е. первого и третьего), уменьшенное на 2.5. Следующий цикл вычисляет сумму квадратов всех элементов массива x в переменной sum:

sum = 0.0;

for (i = 0; i < 20; i++) sum += x[i]*x[i];

Элементы массива хранятся в памяти компьютера друг за другом без промежутков. Описанный выше массив x займет участок памяти размером 160 байтов (так как каждый элемент — это число типа double, имеющее размер 8 байтов).

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

В других языках программирования (кроме C и C++) существуют не только одномерные массивы (вроде описанного выше массива a), но и двумерные, трехмерные и т.д. Под числом измерений массива понимают количество индексов, характеризующих отдельный элемент. Например, элемент двумерного массива задается парой индексов. Наглядный образ двумерного массива — прямоугольная таблица (или матрица), ячейками которой служат элементы. Чтобы указать конкретную ячейку, задают номер строки и номер столбца таблицы, на пересечении которых она находится. Номера строки и столбца — это и есть пара индексов, указывающих нужный элемент. Запомните, что первый индекс всегда считают номером строки, второй — номером столбца (это правило действует не только в программировании; оно пришло из математики, где aij обозначает элемент матрицы, расположенный на пересечении i-й строки и j-го столбца).

В языке C (а также в C++) формально существуют только одномерные массивы. Однако элементы массивов могут иметь любой тип, в том числе сложный. В частности, можно определить массив, каждый элемент которого в свою очередь является массивом (т.е. массив массивов). Такая конструкция по существу аналогична двумерному массиву. Например, описание

double a[10][5];

говорит, что a — массив из 10 элементов, причем каждый из них в свою очередь является массивом из 5 элементов типа double. Таким образом, весь массив состоит из 50 чисел типа double и занимает в памяти 400 байтов. Задавая один или два индекса, можно ссылаться на два вида элементов массива a:

a[i] — элемент с индексом i, являющийся 5-элементным массивом чисел типа double и имеющий размер 5×8 = 40 байтов.

a[i][j] — элемент с индексом j в упомянутом выше 5-элементном массиве a[i]. Это одиночное число типа double (размер 8 байтов).

Следуя общему правилу, мы можем представить массив a как прямоугольную таблицу, состоящую из 10 строк и 5 столбцов (т.к. первый индекс — номер строки, а второй — номер столбца). В памяти компьютера такой массив хранится, как последовательность идущих друг за другом 40‑байтовых элементов-массивов a[0], a[1], a[2], , a[9]. Внутри каждого такого «большого» элемента содержится 5 более «мелких» элементов (т.е. чисел типа double), отвечающих значениям второго индекса от 0 до 4. Пользуясь образом прямоугольной таблицы, можно сказать, что ее элементы хранятся в памяти построчно: вначале идут подряд 5 ячеек первой строки, затем 5 ячеек второй строки и т.д. вплоть до ячеек последней (десятой) строки.

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