Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
programmirovanie / ОПиАЯ_№3_4.doc
Скачиваний:
33
Добавлен:
03.03.2016
Размер:
138.75 Кб
Скачать

3.3 Массивы в Си

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

Для обработки данных, хранимых в массиве, к каждому отдельному элементу можно обращаться, указывая имя массива и номер нужного элемента. Индексированная переменная x[0] служит для обращения к начальному, или 0-му элементу массива х, x[1] – к следующему, а x[n] – к последнему. Целое, заключенное в квадратные скобки, называется индексом, и его величина может быть в диапазоне от 0 до значения, на единицу меньшего, чем общее число ячеек памяти в массиве.

В Си одномерный массив объявляется оператором вида

mun v[ l];

где mun есть тип данных (int, double), а l – целочисленное константное выражение. Его значение представляет собой количество элементов(длина) массива. Массиву v выделяется память из l*mun байтов. Первый элемент массива имеет нулевой индекс, а индекс последнего элемента равен l-1. Например, объявление

double Х[3];

определяет три элемента: Х[0] Х[1] и Х[2].

Константное выражение в объявлении массива можно опустить в следующих трёх случаях:

  1. Когда в объявлении массива элементам явно задаются начальные значения; в этом случае длину массива компилятор определяет по количеству констант. Пример:

double Х[]={1..,1..,1.};

  1. Когда массив объявляется как внешний; при этом ему в другом месте программы выделена память и (возможно) присвоены начальные значения.

  2. Когда массив является формальным параметром(указан в заголовке и прототипе функции).

При этом элементам массивов можно назначить начальные значения. К примеру, объявление

Char U[]= “Эх-хо!”, V[10] “И-и-и-эх”, He[5] “Фрол”, She[4]{‘А’, ‘д’, ‘а’, ‘\0’};

устанавливает, что массив U состоит из 6 элементов, V – из 9, He – из 4 и She содержит 3 элемента.

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

mun v[ ] [ ]…[ ];

Где р представляет собой размерность массива (значит, объявление двумерного массива содержит два константных выражения[ ] [ ], трёхмерного – три [ ] [ ][ ] и т.д.) Однотипные массивы удобно объявлять одним оператором. Здесь же элементам любого массива можно присвоить начальные значения. К примеру, объявим и зададим начальные значения элементам матрицы

А =

double А[3][3] ={ {1..,2..,3.}, {4..,5..,6. }, {7..,8..,9. }}

Внешние фигурные скобки окаймляют весь список значений, а внутренние – элементы каждой строки матрицы А. Чтобы обратится к элементу матрицы А, нужно использовать индексированное имя А[0][0].

Многомерные массивы может задаваться так

А[k][i][j], где

k –номер слоя;

i – номер строки;

j – номер столбца.

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

#define L 81

char T[12][4]={“Dec”, “Jan”, “Feb”, “Mar”, “Apr”, “May”, “Jun”, “Jul”, “Sep”, “Oct”, “Nov”};

P[][L]={“В”, “зыбком”, “мире”, “вещественных”, “чисел”, “осторожность”, “не”, “может”, “быть”, “лишней”};

Здесь определение char T[12][4] задает 12 строковых переменных T[0], T[1]…, T[11] длиной не более 3 символов каждая. Тогда, чтобы вывести на экран последнюю строку, надо указать имя T[11]. Имя T[11][0] выводит первый символ этой строки. Число строк массива Р равно sizeof(P)/sizeof(P[0]).

Пример,

Рассмотрим массив

x[0] x[1] x[2] x[3] x[4] x[5] x[6] x[7]

12,0

6,0

-54,5

14,0

12,0

2,5

8,0

16,0

В таблице представлен ряд операторов с обращением к элементам этого массива.

Оператор

Пояснение

Printf(“%.1f”,x[0]);

Выводит значение x[0], равное 16,0

x[3] = 25.0;

Сохраняет значение 25,0 в x[3]

sum = x[0]+x[1];

Сохраняет сумму x[0] и x[1], равную 28,0 в переменную sum

sum+= x[2];

Прибавляет x[2] к sum. Новая sum равна 34,0

x[3]+=1.0;

Прибавляет 1,0 к x[3]. Новый x[3] равен 26,0

x[2] = x[0]+x[1];

Сохраняет сумму x[0] и x[1] в x[2]. Новый x[2] равен 28,0

Содержание массива х после выполнения этих операторов:

x[0] x[1] x[2] x[3] x[4] x[5] x[6] x[7]

Соседние файлы в папке programmirovanie