Массивы С++
Массивы C++
В этом уроке мы научимся работать с массивами. Мы научимся объявлять, инициализировать и получать доступ к элементам массива в программировании на C++ с помощью примеров.
В языке C++ массив – это переменная, которая может хранить несколько значений одного типа. Например,
Предположим, в классе 27 учеников, и нам нужно сохранить оценки всех из них. Вместо создания 27 отдельных переменных мы можем просто создать массив:
double grade[27];
Вот, оценка это массив, который может содержать максимум 27 элементов double
тип.
В C++ размер и тип массива нельзя изменить после его объявления.
<час>Объявление массива C++
dataType arrayName[arraySize];
Например,
int x[6];
Здесь
int
- тип сохраняемого элемента- х - имя массива
6
- размер массива
Доступ к элементам в массиве C++
В C++ каждому элементу массива соответствует число. Число известно как индекс массива. Мы можем получить доступ к элементам массива, используя эти индексы.
// syntax to access array elements
array[index];
Рассмотрим массив x мы видели выше.
<рисунок>
Несколько вещей, которые нужно помнить:
- Индексы массива начинаются с
0
. Значение x[0] это первый элемент, хранящийся в индексе0
. - Если размер массива
n
, последний элемент сохраняется по индексу(n-1)
. В этом примере x[5] является последним элементом. - Элементы массива имеют последовательные адреса. Например, предположим, что начальный адрес
x[0]
2120д. Затем адрес следующего элемента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
. Однако мы инициализировали его всего тремя элементами.
В таких случаях компилятор присваивает оставшимся местам случайные значения. Часто это случайное значение просто 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[0];
// print ith element of the array
cout >> mark[i-1];
<час> Пример 1. Отображение элементов массива
#include <iostream>
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 << "\nThe numbers are: ";
// Printing array elements
// using traditional for loop
for (int i = 0; i < 5; ++i) {
cout << numbers[i] << " ";
}
return 0;
}
Вывод
The numbers are: 7 5 6 12 35 The numbers are: 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 <iostream>
using namespace std;
int main() {
int numbers[5];
cout << "Enter 5 numbers: " << endl;
// store input from user to array
for (int i = 0; i < 5; ++i) {
cin >> 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
Мы снова использовали for
цикл для итерации от i = 0
до i = 4
. На каждой итерации мы получали данные от пользователя и сохраняли их в numbers[i]
. .
Затем мы использовали другой for
цикл для печати всех элементов массива.
Пример 3. Отображение суммы и среднего значения элементов массива с использованием цикла for
#include <iostream>
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 << "\nTheir Sum = " << sum << endl;
// find the average
average = sum / count;
cout << "Their Average = " << average << endl;
return 0;
}
Вывод
The numbers are: 7 5 6 12 35 27 Their Sum = 92 Their Average = 15.3333
В этой программе:
- Мы инициализировали двойник массив с именем числа но без указания его размера. Мы также объявили три двойных переменных sum , количество и среднее .
Здесьsum =0
иcount = 0
. - Затем мы использовали диапазон
for
цикл для печати элементов массива. На каждой итерации цикла мы добавляем текущий элемент массива в sum . - Мы также увеличиваем значение count. по
1
в каждой итерации, чтобы мы могли получить размер массива к концу цикла for. - После вывода всех элементов мы печатаем сумму и среднее значение всех чисел. Среднее число задается как
average = sum / count;
Примечание. Мы использовали диапазон for
цикл вместо обычного for
петля.
Обычный for
Цикл требует, чтобы мы указали количество итераций, которое определяется размером массива.
Но диапазон for
цикл не требует таких спецификаций.
Выход за пределы массива C++
Если мы объявим массив размером 10, то массив будет содержать элементы с индексом от 0 до 9.
Однако, если мы попытаемся получить доступ к элементу с индексом 10 или более 10, это приведет к неопределенному поведению.
Язык C