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

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

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

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

Общий вид объявления массива:

<имя_типа> <имя_массива> [k1] [k2] … [kn] ;

где k1, k2, …, kn - количество элементов массива - константы или константные выражения по 1, 2, …, n измерениям. Причем значения индексов могут изменяться от 0 до ki-1.

Примеры объявления массивов:

) int C[10] [20] [15]; //трёхмерный целочисленный массив

Примеры обращение к элементам:

float B[5] [20]; //двумерный вещественный массив из 50 строк и 20 столбцов.

Примеры обращения к его элементам :

B[0] [0], B[0] [1] ,.., B[i] [j], …, B[4] [19], …

C[i] [j] [k], ..., C[2*i] [0] [3*k+1], …

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

  • Современные трансляторы языка Си не контролируют допустимость значений индексов. Это должен делать программист.

  • Кол-во измерений массива не ограничено.

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

  • Операций над массивами в Си нет, поэтому пересылка элементов одного массива в другой может быть реализована только поэлементно с помощью цикла.

  • Над элементами массива допускаются те же операции что и над простыми переменными того же типа.

  • Ввод-вывод значений элементов массива можно производить только поэлементно.

  • Начальные значения элементам массива можно присвоить при объявлении массива.

Например:

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

2) int c[ ]={-1,2,0,-4,5,-3,-5,-6,1};

Если размер одномерного массива не указан (даны только по [ ] ), то размер определяется количеством инициированных значений, т.е. кол-вом значений в { }

3) int w[3] [4] ={{1,2,3,4}, // элем. 0-ой строки

{-3,2,-1,1}, // эл-ты 1-ой строки

2,10,1,-6}}; // эл-ты 2-ой строки

При этом если инициализирующих значений меньше, чем элементов массива, то остаток массива обнуляется; если больше - лишние значения не используются.

  • В Си нет массивов с переменными границами. Но, если количество элементов массива известно до выполнения программы, можно определить его как константу с помощью директивы #define , а затем использовать ее в качестве границы массива, например,

#define n 10;

Main ( )

{ int a[n], b[n]; // Объявление 2-х одномерных массивов

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