Массивы C ++ (с примерами)

В этом уроке мы научимся работать с массивами. Мы научимся объявлять, инициализировать и получать доступ к элементам массива в программировании на 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это более предпочтительно, потому что:

  1. Использование int nпросто копирует элементы массива в переменную n во время каждой итерации. Это неэффективно с точки зрения памяти.
    Однако & n использует адрес памяти элементов массива для доступа к их данным, не копируя их в новую переменную. Это эффективно с точки зрения памяти.
  2. Мы просто печатаем элементы массива, а не изменяем их. Поэтому используем, 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:

  1. 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 and count = 0.
  2. 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.
  3. Мы также увеличиваем значение count на 1каждой итерации, чтобы мы могли получить размер массива к концу цикла for.
  4. После печати всех элементов мы печатаем сумму и среднее всех чисел. Среднее значение чисел определяется выражениемaverage = sum / count;

Примечание: мы использовали ранжированный forцикл вместо обычного forцикла.

Обычный forцикл требует, чтобы мы указали количество итераций, которое задается размером массива.

Но для дальнего forцикла таких спецификаций не требуется.

Массив C ++ выходит за рамки

Если мы объявим массив размером 10, то массив будет содержать элементы с индекса 0 до 9.

Однако, если мы попытаемся получить доступ к элементу с индексом 10 или более 10, это приведет к неопределенному поведению.

Интересные статьи...