Массивdata
Начала
Пример
Общая форма объявления массива
Возрастание адресов
Массивы
Большинством объектов языка Си, с которыми мы имели дело, были переменные. Каждая переменная при объявлении получала тип и имя, с которым связывалась определенная ячейка памяти. Однако расположение значений переменных по адресам памяти никак не упорядочивалось. При решении многих задач, особенно с большим количеством однотипных данных, использование переменных с различными именами, а значит не упорядоченных по адресам памяти, затрудняет или делает вообще невозможным програмирование. В подобных случаях в языке Си используют объекты, называемые массивами.
Массив — это упорядоченная последовательность величин, обозначаемая одним именем. Упорядоченность заключается в том, что элементы массива располагаются в последовательных ячейках памяти. Можно провести аналогию между ячейками памяти, отведенными под массив, и таким же количеством контейнеров, скрепленных между собой (рис. 1.4). На всю конструкцию
контейнеров повешен ярлык с именем массива data. Контейнеры в такой конструкции пронумерованы начиная с нуля и представляют набор восьмибитных ячеек оперативной памяти, в которых хранятся элементы массива. Номер контейнера — значение индекса элемента массива. Чтобы получить доступ к нужному контейнеру, нужно указать имя массива и его индекс, который пишется в квадратных скобках.
>
. . . | ... | п-2 | п-1 | ... |
Массив data[n], n — константа
Рис. 1.4 Пример
data[2]=32;
/^Второму элементу массива */ /*с именем data присваивается */ /^значение 32.*/
Элементы массива могут употребляться в программе так же, как и простые переменные.
При объявлении массива нужно обязательно указать общее количество элементов, чтобы ЭВМ могла выделить память под весь массив.
тип имя[размер массива];
float data[245];
Здесь массив содержит 245 элементов типа float: data[0], data[\], data[2], ..., data[244].
Связь массивов и указателей
Имя массива фактически является константой-указателем на начальный адрес данных — на адрес расположения элемента массива с нулевым индексом.
Графическое представление массива в памяти ЭВМ представлено на рис. 1.5, где data — адрес начала массива; sizeojidatd) — размер массива data в байтах; sizeojifloat) — размер памяти под один элемент массива в байтах; р\ и р! — указатели для работы с массивом.
Начальный адрес массива определяется компилятором в момент его объявления, и такой адрес никогда не может быть изменен. Адрес массива можно узнать, если вывести на экран значение константы с именем массива или вывести адрес нулевого элемента массива. Это значение можно присвоить указателю, имеющему другое имя, а затем, наращивая значение этого указателя, обращаться по выбору к любому элементу массива. Следовательно, в ряде случаев операции с массивами можно свести к операциям с указателями.
Возрастание адресов
о
Адрес
массива
о
р1 =data р2 = р1 + i
4 *
дпошаШЭЕ!