Массив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 *


 


дпошаШЭЕ!