В этом уроке мы научимся работать с массивами. Мы научимся объявлять, инициализировать и получать доступ к элементам массива в программировании на C ++ с помощью примеров.
В C ++ массив - это переменная, которая может хранить несколько значений одного типа. Например,
Предположим, в классе 27 учеников, и нам нужно сохранить оценки всех их. Вместо того, чтобы создавать 27 отдельных переменных, мы можем просто создать массив:
double grade(27);
Здесь grade - это массив, который может содержать не более 27 элементов double
типа.
В C ++ размер и тип массивов не могут быть изменены после его объявления.
Объявление массива C ++
dataType arrayName(arraySize);
Например,
int x(6);
Вот,
int
- тип хранимого элемента- x - имя массива
6
- размер массива
Доступ к элементам в массиве C ++
В C ++ каждый элемент массива связан с числом. Число известно как индекс массива. Мы можем получить доступ к элементам массива, используя эти индексы.
// syntax to access array elements array(index);
Рассмотрим массив x, который мы видели выше.

Несколько вещей, которые следует помнить:
- Индексы массива начинаются с
0
. Значение x (0) - это первый элемент, хранящийся по индексу0
. - Если размер массива равен
n
, последний элемент сохраняется по индексу(n-1)
. В этом примере x (5) - последний элемент. - Элементы массива имеют последовательные адреса. Например, предположим, что начальный адрес
x(0)
2120d. Тогда адрес следующего элементаx(1)
будет 2124d, адресомx(2)
будет 2128d и так далее.
Здесь размер каждого элемента увеличивается на 4. Это связано с тем, что размерint
составляет 4 байта.
Инициализация массива C ++
В C ++ можно инициализировать массив во время объявления. Например,
// declare and initialize and array int x(6) = (19, 10, 8, 17, 9, 15);

Другой способ инициализации массива при объявлении:
// declare and initialize an array int x() = (19, 10, 8, 17, 9, 15);
Здесь мы не упомянули размер массива. В таких случаях компилятор автоматически вычисляет размер.
Массив C ++ с пустыми членами
В C ++, если массив имеет размер n
, мы можем хранить до n элементов в массиве. Однако что произойдет, если мы сохраним менее n элементов.
Например,
// store only 3 elements in the array int x(6) = (19, 10, 8);
Здесь массив x имеет размер 6
. Однако мы инициализировали его всего с 3 элементами.
В таких случаях компилятор присваивает оставшимся местам случайные значения. Часто это случайное значение просто 0
.

Как вставить и распечатать элементы массива?
int mark(5) = (19, 10, 8, 17, 9) // change 4th element to 9 mark(3) = 9; // take input from the user // store the value at third position cin>> mark(2); // take input from the user // insert at ith position cin>> mark(i-1); // print first element of the array cout <> mark(i-1);
Пример 1: отображение элементов массива
#include using namespace std; int main() ( int numbers(5) = (7, 5, 6, 12, 35); cout << "The numbers are: "; // Printing array elements // using range based for loop for (const int &n : numbers) ( cout << n << " "; ) cout << "The numbers are: "; // Printing array elements // using traditional for loop for (int i = 0; i < 5; ++i) ( cout << numbers(i) << " "; ) return 0; )
Вывод
Цифры: 7 5 6 12 35 Цифры: 7 5 6 12 35
Здесь мы использовали for
цикл для итерации от i = 0
до i = 4
. На каждой итерации мы распечатали numbers(i)
.
Мы снова использовали цикл for на основе диапазона для вывода элементов массива. Чтобы узнать больше об этом цикле, проверьте C ++ Ranged for Loop.
Примечание. В нашем цикле на основе диапазона мы использовали код const int &n
вместо int n
объявления диапазона. Однако const int &n
это более предпочтительно, потому что:
- Использование
int n
просто копирует элементы массива в переменную n во время каждой итерации. Это неэффективно с точки зрения памяти.
Однако & n использует адрес памяти элементов массива для доступа к их данным, не копируя их в новую переменную. Это эффективно с точки зрения памяти. - Мы просто печатаем элементы массива, а не изменяем их. Поэтому используем,
const
чтобы случайно не изменить значения массива.
Пример 2: получение входных данных от пользователя и сохранение их в массиве
#include using namespace std; int main() ( int numbers(5); cout << "Enter 5 numbers: " << endl; // store input from user to array for (int i = 0; i > numbers(i); ) cout << "The numbers are: "; // print array elements for (int n = 0; n < 5; ++n) ( cout << numbers(n) << " "; ) return 0; )
Вывод
Enter 5 numbers: 11 12 13 14 15 The numbers are: 11 12 13 14 15
Once again, we have used a for
loop to iterate from i = 0
to i = 4
. In each iteration, we took an input from the user and stored it in numbers(i)
.
Then, we used another for
loop to print all the array elements.
Example 3: Display Sum and Average of Array Elements Using for Loop
#include using namespace std; int main() ( // initialize an array without specifying size double numbers() = (7, 5, 6, 12, 35, 27); double sum = 0; double count = 0; double average; cout << "The numbers are: "; // print array elements // use of range-based for loop for (const double &n : numbers) ( cout << n << " "; // calculate the sum sum += n; // count the no. of array elements ++count; ) // print the sum cout << "Their Sum = " << sum << endl; // find the average average = sum / count; cout << "Their Average = " << average << endl; return 0; )
Output
The numbers are: 7 5 6 12 35 27 Their Sum = 92 Their Average = 15.3333
In this program:
- We have initialized a double array named numbers but without specifying its size. We also declared three double variables sum, count, and average.
Here,sum =0
andcount = 0
. - Then we used a range based
for
loop to print the array elements. In each iteration of the loop, we add the current array element to sum. - Мы также увеличиваем значение count на
1
каждой итерации, чтобы мы могли получить размер массива к концу цикла for. - После печати всех элементов мы печатаем сумму и среднее всех чисел. Среднее значение чисел определяется выражением
average = sum / count;
Примечание: мы использовали ранжированный for
цикл вместо обычного for
цикла.
Обычный for
цикл требует, чтобы мы указали количество итераций, которое задается размером массива.
Но для дальнего for
цикла таких спецификаций не требуется.
Массив C ++ выходит за рамки
Если мы объявим массив размером 10, то массив будет содержать элементы с индекса 0 до 9.
Однако, если мы попытаемся получить доступ к элементу с индексом 10 или более 10, это приведет к неопределенному поведению.