Массив располагается в памяти последовательно, элемент за элементом. Сначала лежит нулевой, потом первый и т.д. Элементы располагаются по возрастанию адреса: Один элемент массива отстоит от другого на количество байт, равное базовому типу массива. Формула, по которой производится позиционирование по массиву:
базовый адрес + размер базового типа * индекс;
Если указывается неправильный адрес производится позиционирование базового адреса на адрес, вычисленный по формулам. При этом программа получает полный доступ к содержимому ячейки памяти, которая ей по сути не пренадлежит. В результате этого может произойти ошибка на этапе выполнения.
Каждый элемента массива имеет свою собственную размерность, которая напрямую зависит от типа всего массива. Например, если массив имеет тип данных int - размер каждого элемента в нем - 4 байта. Таким образом, общий размер всего массива вычисляется по формуле:
ОБЩИЙ_РАЗМЕР = РАЗМЕР_ТИПА_ДАННЫХ*КОЛИЧЕСТВО_ЭЛЕМЕНТОВ_В_МАССИВЕ
Для начала, нам необходимо научиться создавать массив. А, для этого - во-первых, определить общий синтаксис. Во-вторых, выяснить, каким правилам и ограничениям этот синтаксис подчиняется.
тип_данных имя_массива[количество_элементов];
int ar[5];
const int size=3; double br[size];
Рассмотрим, как обратиться к конкретному элементу массива. Запись значения:
имя_массива[индекс_элемента]=значение;
Получение значения:
cout<<имя_массива[индекс_элемента];
Здесь, на место индекса_элемента может быть подставлено ЛЮБОЕ целочисленное значение, в том числе выражение, результатом которого является целое число.
const int size=5; int ar[size]; // создание массива ar[2]=25; // запись значения 25 в элемент с индексом 2 cout<<ar[2]<<"\n"; // вывод на экран значения элемента с индексом 2 - 25
Заполнить массив данными можно двумя способами:
тип_данных имя_массива[количество элементов]={значение1, значение2, значение3, … значение n}; const int size=3; int ar[size]={1,30,2};
При такой форме инициализации есть некоторые особенности:
тип_данных имя_массива[]={значение1, значение2, значение3, … значение n}; int ar[]={1,30,2}; //В данной строке массив автоматически получит размер 3.
int ar[5]={1,2,3}; такая запись эквивалентна записи: int ar[5]={1,2,3,0,0};
int array[2]={1,2,3}; // ошибка на этапе компиляции
Одномерный массив - массив данных, где каждое значение обладает только одной характеристикой - порядковым номером (индексом). Именно по этому индексу мы и обращаемся к конкретному элементу.
Сегодня мы поговорим о многомерных массивах, т. е. о массивах, где каждый элемент описывается несколькими характеристиками.
Двумерный массив представляет собой совокупность строк и столбцов, на пересечении которых находится конкретное значение. Объявить двумерный массив несложно, необходимо указать количество строк и столбцов. При этом, здесь действуют все теже правила, что и при объявлении одномерного массива. Т. е. нельзя в качестве количества строк и столбцов указывать неконстантные и нецелочисленные значения.
Общий синтаксис: тип_данных имя_массива [число_строк][число_столбцов]; Пример: const int row=3; // строки const int col=4; // столбцы int array[row][col]; // массив размером row на col(3х4)