Массивы

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

Описание массива в общем случае имеет формат:

[класс памяти] [const] тип имя [ константное выражение ] [={список инициализирующих элементов}];

Константное выражение представляет собой количество элементов массива (размерность массива). Если массив объявлен без инициализирующего списка, то задание размерности массива обязательно. Например,

int a[10]; - массив из 10 целых чисел

int n=10; int a[n]; - недопустимо, так как n – не константа

int a[]; - недопустимо, так как нет ни размерности ни инициализирующего списка.

Предпочтительнее задавать размерность массива с помощью именованных констант. Например,

const int n=10;

int mas[n];

Когда массив объявлен без указания размера, но при этом инициализирован списком, его размер вычисляется путем подсчета числа элементов этого списка. Например

int a []={1,2,3,4};//размерность массива равна 4

Явная инициализация массива разрешена только при его определении и возможна двумя способами: либо с указанием размера массива в квадратных скобках, либо без его явного указания, например,

int а[6]={1,2,3,4};//массив из 6 целых чисел с инициализацией первых четырех, остальные будут обнулены.

char str1[]={‘a’, ‘b’, ‘c’};// массив из 3 элементов типа char

Число элементов в инициализирующем списке должно быть меньше и равно указанной размерности массива, то есть запись int a[3]={1,2,3,4}; недопустима.

Доступ к элементам массива осуществляется с помощью комбинации имя массива + индекс элемента следующими двумя способами.

1. С помощью записи имя_массива [ индекс элемента ]. То есть, чтобы обратится к i- тому элементу массива а, используют запись а[i], при этом первый элемент массива имеет индекс 0.

2. С помощью записи *(имя_массива+индекс элемента) Важно понимать, что имя массива является указателем-константой на его первый элемент. То есть, если описан массив int a [n], то для обращения к его i-ому элементу наряду с записью a[i], можно использовать запись *(a+i).

Работа с элементами массива организовывается обычно в цикле.

Для ввода и вывода элементов массива а можно использовать записи

cin>>a[0]>>a[1]>>[3];

cout<<a[0]<<a[1]<<a[3];

соответственно, при условии, что количество элементов точно известно и невелико. На практике так поступают редко.

При записи cout<<a; на экране появится адрес памяти, по которому расположен первый элемент массива a, а запись cin>>a; вызовет ошибку времени выполнения.

Исключение составляют только массивы символов (char), для которых переопределены объекты cin и cout.

Например, пусть описан массив

char s[255]=”Hello”;/*обратите внимание, что массив типа char допустимо инициализировать не только списком элементов в скобках {}, но и строковой константой*/

cout<<s; //на экран выведется, не адрес памяти, а вся строка

cin>>s; // с клавиатуры считаются все символы до первого пробельного разделителя.

Операция new, используемая для инициализации указателей, позволяет определять массив еще одним способом (это так называемый динамический массив):

int k;

cin>>k;

int *a=new int [k];

Память, зарезервированная под динамический массив, должна освобождаться явным образом оператором delete [], например delete [] a;

Многомерные массивы описываются как массивы массивов, например,

int a2[3][2] //массив из 3 массивов, содержащих по 2 целых элемента.

Для обращения к элементу двумерного массива используется два индекса, например, a2[i][j]. Для работы с двумерными массивами используется конструкция вложенных циклов.

Задание для самостоятельной работы! Придумать, как двумерный массив задать динамически.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: