В этом уроке мы научимся работать с массивами. Мы научимся объявлять, инициализировать и получать доступ к элементам массива в программировании на 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, который мы видели выше.
Элементы массива в C ++
Несколько вещей, которые следует помнить:
- Индексы массива начинаются с
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);
Элементы массива C ++ и их данные
Другой способ инициализации массива при объявлении:
// 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.
Пустым членам массива автоматически присваивается значение 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 =0andcount = 0. - Then we used a range based
forloop 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, это приведет к неопределенному поведению.








