Общие сведения о массивах

Массивы как параметры функций

Общие сведения о массивах

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

Массив представляет собой набор однотипных данных, имеющих общее имя (имя массива) и различающихся местоположением в массиве.

В С++ массив не является стандартным типом данных. Напротив, он сам имеет тип: int, char, float, double и т.д. Допускается создавать массивы массивов, указателей, структур и других данных.

В массиве хранятся отдельные значения, которые называются элементами массива. Все элементы массива должны быть одного типа. Каждому элементу массива присваивается индекс (или индексы), задающий (задающие) местоположение элемента в массиве.

Под размерностью массива понимают количество измерений массива (т.е. число индексов). Размеры по каждому измерению массива вместе с типом его элементов определяют количество байтов, необходимых для размещения массива в памяти компьютера, которое выполняется на этапе компиляции. Поэтому размеры массива могут быть заданы только целой положительной константой или константным выражением, например:

int a[10]; // одномерный массив из 10 элементов

int b[3][4]; // двумерный массив из 3 строк и 4 столбцов

const int n = 10;

int a[n]; // размер массива задан константой

Размеры при объявлении массива предпочтительнее задавать с помощью именованных констант.

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

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

Одномерный массив представляет собой совокупность однотипных элементов, доступ к которым определяется одним индексом. Все элементы массива сохраняются в памяти последовательно, первый элемент имеет нулевой индекс (далее 1, 2, и т.д.). Индекс – это порядковый номер элемента в массиве.

Массив перед использованием в программе, как и обычную переменную, следует объявить. Объявить одномерный массив можно следующим образом:

где тип_элементов – допустимый в С++ тип элементов массива;

имя_массива – идентификатор, задаваемый по тем же правилам, что и имена обычных переменных;

размер_массива это количество элементов массива.

Примеры объявления одномерных массивов различных типов:

int a[10]; // массив из 10 элементов типа int

float array[3]; // массив из 3 элементов типа float

char mas[40]; // массив из 40 элементов типа char

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

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

int maxY, maxZ, ar[10], mas[5];

При объявлении массивов необходимо помнить, что индекс первого элемента всегда равен нулю. Допустимыми считаются значения индексов, находящиеся в диапазоне от 0 до размер_массива 1. Например, объявление

предполагает наличие десяти индексированных переменных:

mas[0] mas[1] . mas[9]

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

Тема 3 Массивы

При использовании простых переменных каждой области памяти для хранения данных соответствует свое имя. Если с группой величин одинакового типа требуется выполнять однообразные действия, то им дают одно имя, а различают по порядковому номеру.

Массив – это упорядоченная совокупность данных, занимающая непрерывную область памяти, которая обладает следующими свойствами:

· все элементы массива имеют одинаковый тип и имя;

· доступ к конкретному элементу массива осуществляется по его номеру или индексу (индексам).

В С++ различают массивы фиксированного размера и массивы переменного размера (динамические). Количество элементов в массиве первого типа известно при написании программы и никогда не меняется. Память под такой массив выделяет компилятор. Количество элементов динамического массива на этапе компиляции не известно и, как правило, зависит от входных данных. Память под динамический массив выделяется во время выполнения программы с помощью операций выделения памяти.

Описание массива фиксированного размера отличается от описания простой переменной наличием после имени квадратных скобок, в которых задается количество элементов массива (или размерность):

float A [10]; // пример описания массива из 10 вещественных чисел

Тип элементов массива – любой допустимый тип С++, например, встроенный или библиотечный, кроме типа void. Элементы массива нумеруются, начиная с нуля. Таким образом, последний элемент массива имеет индекс на единицу меньше, чем число элементов массива. Глобальный массив по умолчанию инициализируется нулями. Локальный массив, как и обычная переменная, по умолчанию никак не инициализируется. Инициализирующие значения при желании задают в фигурных скобках. Количество значений в списке инициализации не должно превышать размерность массива, иначе будет выдано сообщение об ошибке. Если же их меньше, то недостающие значения считаются равными нулю, например:

int Mas[5] = <3, 2, 1>; // 3 2 1 0 0

intMas[5] = <0>; // все элементы проинициализированы нулем

Размерность массива может быть задана не только целой положительной константой, но и константным выражением, например:

const int Nmax = 5;

int Mas [Nmax] = <5, 4, 3, 2, 1>;

int Mas [Nmax+10];

Одномерные массивы можно объявлять без указания размерности. Но в этом случае в объявлении массива обязательно использование инициализации. Это позволяет определить размер памяти, которую нужно выделить для массива:

int Mas[ ] = <30, 20, 10>; // одномерный массив из трёх элементов

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

Mas[0] = 10; Mas[k] = k + 5; Mas[i – 10] = sin(x);

Прежде чем выполнять обработку массива, нужно заполнить его исходными данными. Чаще всего для этого используется ввод значений с клавиатуры или из файла. Если же массив является результатом работы программы, то его нужно вывести на экран или в файл. Как правило, массив объявляется максимальной размерности, необходимой для решения задачи, а реальная размерность вводится пользователем во время работы программы. Далее приведены блоки ввода одномерного массива с клавиатуры и вывода его на экран:

#include

void main()

const int Nmax = 10; // максимальная размерность массива

int Mas[Nmax]; // объявление массива максимальной размерности

int N; // реальная размерность массива

scanf( "%d", &N ); // ввод реальной размерности массива

for ( int i = 0; i

Пример 1. Вычислить сумму и произведение элементов массива.

const int Nmax = 10;

int Mas[Nmax], N; // массив и его реальная размерность

int Sum, Pr; // сумма и произведение

Sum = 0, Pr = 1; // обязательная инициализация!

for ( int i = 0; i ” (и, разумеется, изменить имя переменной на Max).

В операторе вывода для удобства восприятия печатается номер элемента больший на единицу Num + 1, т.к. нумерация элементов начинается с нуля.

Пример 3. Определить номер элемента массива, имеющего заданное значение (линейный поиск элемента в массиве).

const int Nmax = 10;

int Mas[Nmax], N;

int V, Num; // заданное значение и его номер

int Flag = 0; // флажок наличия или отсутствия результата

scanf( "%d", &V ); // ввод заданного значения

for ( int i = 0; i Mas[j]) // если предыдущий элемент больше следующего

temp = Mas[i]; // перестановка элементов массива

Выделяем первый элемент массива (у него номер i) и последовательно сравниваем его со всеми остальными (с номером j). Если первый элемент окажется больше какого-то из остальных, то меняем их местами. За один проход массив не будет отсортирован, но самое маленькое значение окажется в первом элементе массива. На следующем проходе берём второй элемент массива (номер i) и также последовательно сравниваем его со всеми остальными (у них номер j). Если он окажется больше какого-то из них, то также меняем их местами. Теперь минимальный из оставшихся элементов массива окажется на втором месте. Повторяем эту процедуру, пока не останется сравнить два элемента: предпоследний (i-й) и последний (j-й). Когда оба цикла выполнятся до конца, элементы массива будут отсортированы по возрастанию. Замена операции “>” на “

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Только сон приблежает студента к концу лекции. А чужой храп его отдаляет. 8829 — | 7539 — или читать все.

78.85.5.224 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

При решении задач с большим количеством данных одинакового типа использование переменных с различными именами, не упорядоченных по адресам памяти, затрудняет программирование. В подобных случаях в языке Си используют объекты, называемые массивами.

Массив — это непрерывный участок памяти, содержащий последовательность объектов одинакового типа, обозначаемый одним именем.

Массив характеризуется следующими основными понятиями:

Элемент массива (значение элемента массива) – значение, хранящееся в определенной ячейке памяти, расположенной в пределах массива, а также адрес этой ячейки памяти.
Каждый элемент массива характеризуется тремя величинами:

  • адресом элемента — адресом начальной ячейки памяти, в которой расположен этот элемент;
  • индексом элемента (порядковым номером элемента в массиве);
  • значением элемента.

Адрес массива – адрес начального элемента массива.

Имя массива – идентификатор, используемый для обращения к элементам массива.

Размер массива – количество элементов массива

Размер элемента – количество байт, занимаемых одним элементом массива.

Графически расположение массива в памяти компьютера можно представить в виде непрерывной ленты адресов.

Представленный на рисунке массив содержит q элементов с индексами от 0 до q-1 . Каждый элемент занимает в памяти компьютера k байт, причем расположение элементов в памяти последовательное.

Адреса i -го элемента массива имеет значение

n+k·i

Адрес массива представляет собой адрес начального (нулевого) элемента массива. Для обращения к элементам массива используется порядковый номер (индекс) элемента, начальное значение которого равно 0 . Так, если массив содержит q элементов, то индексы элементов массива меняются в пределах от 0 до q-1 .

Длина массива – количество байт, отводимое в памяти для хранения всех элементов массива.

ДлинаМассива = РазмерЭлемента * КоличествоЭлементов

Для определения размера элемента массива может использоваться функция