Массивы чрезвычайно важная тема в C++. В программах они используются очень часто и разобраться в этой теме необходимо досконально. Сразу вас обрадую – понять и научиться применять массивы достаточно просто даже начинающему.
Итак, зачем же нужны массивы и что они из себя представляют? К настоящему моменту вы уже хорошо знаете, что данные программы хранятся в объявленных нами переменных определённого типа (int, double, char… ). Но бывает так, что программе необходимо хранить сотни (а то и больше) переменных однотипных данных, а также необходимо с ними работать – присваивать значения, изменять их и т.д.
К примеру, надо хранить порядковые номера строк. Согласитесь – любому станет страшно от мысли, что надо создать пятьсот переменных типа int, каждой дать уникальное имя и присвоить значение от 1-го до 500-та. (мне уже страшно :) В таком случае, массивы нас просто спасут.
Отметим основное и перейдем к практическому примеру:
- массив в С++ – это совокупность определенного количества однотипных переменных, имеющих одно имя. К примеру, int array [3];. Эта запись означает, что мы объявили массив с именем array , который содержит в себе 3 переменные типа int;
- переменные массива называют элементами ;
- каждый элемент имеет свой уникальный индекс – свой порядковый номер. Используя индекс мы можем обращаться к конкретному элементу. ВАЖНО – индексация элементов массива начинается с 0. Так в массиве int array [3] первый элемент имеет индекс 0, а последний – 2. Чтобы обратиться, например, к нулевому элементу массива и изменить его значение, надо указать имя массива и в квадратных скобках указать индекс элемента – array [0] = 33.
Рассмотрим пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | // в этой программе создаем массив с размером size, // с помощью цикла for вносим данные во все ячейки // массива и отображаем их содержимое на экран #include <iostream> using namespace std; int main() { setlocale(LC_ALL, "rus"); const int SIZE = 10; //объявляем константу int firstArray[SIZE ]; //объявляем массив с количеством элементов SIZE for (int i = 0; i < SIZE ; i++) //заполняем и отображаем значения на экран { firstArray[i] = i + 1; // на первом шаге цикла firstArray[0] присвоить 1 (0 + 1) cout << i << "-я ячейка хранит число " << firstArray[i] << endl; } cout << endl; return 0; } |
В строке 12 мы определяем целочисленную константу SIZE, которая будет хранить размер массива (определённое нами, количество его элементов). В строке 13 объявляем массив: указываем тип данных, которые будут храниться в ячейках массива, даем имя и указываем размер в квадратных скобках.
Важно, что в квадратные скобки мы можем записывать только целые константные значения. Надо либо сразу вписать целое число в квадратные скобки при объявлении массива (int firstArray[100];), либо определить целочисленную константу до объявления массива и ввести в квадратные скобки имя этой константы (как в нашем примере).
Второй способ использовать предпочтительней, если в ходе программы вам придется несколько раз обращаться к массиву через цикл. Объясняется это тем, что когда мы объявляем цикл, в нём можно указать условие изменения счетчика до значения SIZE.
Вот представьте, что нам необходимо изменить размер массива с 10 элементов на 200. В этом случае, нам остаётся всего на всего изменить значение целочисленной константы, и таким образом у нас автоматически подставятся новые значения размера и в массив, и во все циклы программы.
Можете попробовать в нашем примере внести любую другую цифру в константу SIZE. И вы увидите, что программа будет прекрасно работать – создаст массив на столько элементов, на сколько вы укажете, внесет данные и отобразит их на экране.
В строках 15 – 19 определяем цикл for. Его счетчик i будет служить индексом элементов массива. В самом начале, он равен 0 и с каждым шагом будет увеличиваться на единицу до тех пор, пока не станет равным SIZE – количеству элементов массива.
Обратите внимание, в одном цикле мы и присваиваем различные значения элементам массива и в следующей строке обращаемся к ним, чтобы вывести данные, которые они хранят, на экран.
Запускаем программу и видим результат:
Присвоить значение элементам массива можно разными способами – инициализировать его при создании либо с помощью цикла. Если размер массива большой, есть прекрасная возможность использовать цикл for или while для инициализации его элементов. Так мы сделали в нашем примере. Можно заполнить массив случайными числами – об этом у нас есть отдельная статья.
А если массив совсем небольшой, к примеру на 5 элементов, инициализировать его можно сразу при объявлении:
Так элементу с индексом 0 – firstArray[0] – будет присвоено значение 11, а последнему элементу массива firstArray[4] – значение 15. Есть такая фишка – вы можете не указывать размер массива в квадратных скобках и сделать такую запись:
Предыдущая запись эквивалентна этой. Только во втором случае компилятор автоматически вычислит размер массива, по количеству данных в фигурных скобках.
Так же при начальной инициализации элементов массива, когда массив необходимо очистить от «мусора» (остаточных данных других программ в памяти) лучше сразу присвоить всем элементам значение 0. Это выглядит так:
Следует запомнить, что такая инициализация возможна только для заполнения нулями. Если необходимо заполнить элементы массива какими-либо другими числами, лучше применять цикл. В C++11 (стандарт кодирования) при использовании списковой инициализации (инициализации с фигурными скобками) разрешается даже отбросить знак = .
Хочется показать еще один прием инициализации при создании массива. К примеру, для массива из 30-ти элементов нам надо внести значения 33 и 44 только в ячейки с индексом 0 и 1 соответственно, а остальные заполнить нулями. Тогда делаем так:
эти данные будут внесены в нулевую и первую ячейки, а остальные автоматически примут значение 0.
Организовать заполнение массива можно и при помощи оператора cin:
1 2 3 4 5 | for (int i = 0; i < size; i++) //заполняем и выводим значения на экран { cout << "Введите значение в ячейку №" << i << " :"; cin >> firstArray[i]; } |
Чтобы присвоить или изменить значение конкретного элемента, надо обратиться к нему, используя его индекс. К примеру, все значения массива из 500-та элементов нас устраивают, но необходимо изменить значение лишь одного. Тогда мы обращаемся к нему по его индексу : firstArray[255] = 7;
С этим разобрались, теперь давайте посмотрим, каким же образом массив располагается в оперативной памяти. Массив типа int из пяти элементов займет 20 байт памяти – 4 байта (int) * 5 (количество элементов) – и эти данные будут располагаться в памяти последовательно, как показано на рисунке:
Подведем итог и отметим всё самое важное о массивах:
- синтаксис объявления массива :
тип_Данных_Массива имя_Массива [размер];
- переменные массива называются элементами, а каждый элемент имеет свой порядковый номер – индекс.
- нумерация индексов элементов массива начинается с нуля!!!
- инициализировать массив можно только при его создании – int firstArray[3] = {1, 2, 3}; Выполнять инициализацию позже уже не допускается:
firstArray[3] = {1, 2, 3};Если массив не был инициализирован в начале, можно присвоить значения его элементам, используя циклы или просто обращаясь к необходимому элементу через его индекс.
- инициализировать массив можно только при его создании – int firstArray[3] = {1, 2, 3}; Выполнять инициализацию позже уже не допускается:
- массив может быть одномерным – таким, как рассмотрен в этом примере, и многомерным – двумерным, трехмерным… (их мы рассмотрим в одной из наших следующих статей).
Не забывайте о необходимости практиковаться в решении задач – Задачи: Массивы в C++. Хотите узнать больше о массивах в C++ (в том числе о символьных массивах и строках)? Посмотрите эти видео-уроки:
cout << endl;
Здраствуйте что значит cout << endl; я его убирала и ничего не изменилось.
endl это команда которая переносит курсор на следующую строку
А где сортировка массивов ?
Скажите пожалуйста как можно вводить значение для размера массива?
создайте переменную для хранения значения количества элементов и туда помещайте значение типо.
int N = 0; //amount of elements
cin<<N;
int Arr[N];