Массив — основа для хранения однородных данных

Массив — основа для хранения однородных данных

Как описать массив

Массивы предназначены для хранения данных одного тина и для удобного доступа к содержимому этих данных. Синтаксис описания массива таков:

тип имя_переменной [ число_элементов ] ;

Например, вместо того чтобы описывать двадцать переменных:

int xl, х2, /* ... */ х20;

можно записать совсем просто:

int х [ 2 0 ] ;

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

h01731.jpg

В Си++ принято, что нумерация переменных начинается с нуля. То есть первый элемент имеет индекс 0, второй — индекс 1, двадцатый — индекс 19. Это очень важная особенность языка, немного непривычная начинающему программисту, со школы привыкшему вести отсчет от единицы.

Такая особенность связана с историей создания Си. Чтобы получить быстрый машинный код и сократить время компиляции (для программ размером в тысячи строк оно могло составлять часы) было решено пожертвовать удобством работы программистов ради получения высокоэффективных (для того времени) приложений. Дело в том, что элементы массива обычно располагаются в памяти строго последовательно, друг за другом, и при компиляции текста на Си (а теперь Си++) все упоминания переменной х заменяются на физический адрес первого элемента этого массива в оперативной памяти, а все обращения к элементам массива заменяются на машинные команды сложения адреса х с индексом — смещением соответствующего элемента относительно начала этой последовательности. Но такое смещение для первого элемента будет, очевидно, не 1 (в «штуках» предшествующих элементов), а 0. Для второго смещение будет 1 и т. д. Поэтому, чтобы не тратить лишние такты процессора на выполнение дополнительных команд вычитания из смещения поправки на один элемент, избыло решено приблизить технологию работы с массивами в Си к технологии, более естественной для реальной работы компьютера с памятью. Только для программистов она стала, к сожалению, менее естественной.

173