Освоение массивов в C++: объявление, инициализация и практические примеры
Массивы в C++
Это руководство охватывает массивы в C++ — как объявлять, инициализировать, обращаться к элементам и манипулировать ими — с практическими примерами кода.
В C++ массив — это единственная переменная, хранящая последовательность элементов одного типа фиксированного размера. Например, класс с 27 студентами может хранить их оценки в одном массиве:
double grade[27];
Здесь grade может содержать до 27 значений double. После объявления массива его размер и тип элементов неизменны.
Объявление массива в C++
dataType arrayName[arraySize];
Например:
int x[6];
Пояснение:
int— тип элементов- x — имя массива
6— количество элементов
Доступ к элементам массива в C++
Каждый элемент массива идентифицируется индексом, начиная с 0. Получить или изменить элемент можно так:
// синтаксис доступа к элементам массива
array[index];
Рассмотрим массив x выше.

Ключевые моменты
- Индексы начинаются с
0(например, x[0] — первый элемент). - Для массива размера
nпоследний индекс —n-1(здесь x[5]). - Элементы массива хранятся в последовательных адресах памяти. Если
x[0]начинается по адресу 2120d, тоx[1]— 2124d,x[2]— 2128d и т.д., так какintзанимает 4 байта.
Инициализация массива в C++
Массивы можно инициализировать при объявлении:
// объявление и инициализация массива
int x[6] = {19, 10, 8, 17, 9, 15};

Альтернативно, пусть компилятор выведет размер:
// объявление и инициализация массива
int x[] = {19, 10, 8, 17, 9, 15};
Если предоставлено меньше элементов, чем размер массива, остальные элементы в C++ инициализируются нулями.

Вставка и вывод элементов массива
int mark[5] = {19, 10, 8, 17, 9};
// изменить 4-й элемент на 9
mark[3] = 9;
// ввод от пользователя и сохранение в третьей позиции
cin >> mark[2];
// ввод от пользователя и вставка в i-ю позицию
cin >> mark[i-1];
// вывод первого элемента
cout << mark[0];
// вывод i-го элемента
cout >> mark[i-1];
Пример 1: вывод элементов массива
#include <iostream>
using namespace std;
int main() {
int numbers[5] = {7, 5, 6, 12, 35};
cout << "The numbers are: ";
// Вывод элементов массива через range-based for
for (const int &n : numbers) {
cout << n << " ";
}
cout << "\nThe numbers are: ";
// Вывод через традиционный for
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
Оба цикла дают одинаковый результат. Range-based цикл предпочтителен, когда нужно только читать значения, так как он избегает лишнего копирования.
Примечание: Использование const int &n эффективнее int n, так как передает элементы по ссылке и предотвращает случайное изменение.
Пример 2: чтение пользовательского ввода в массив
#include <iostream>
using namespace std;
int main() {
int numbers[5];
cout << "Enter 5 numbers: " << endl;
// Сохранение пользовательского ввода в массив
for (int i = 0; i < 5; ++i) {
cin >> numbers[i];
}
cout << "The numbers are: ";
// Вывод элементов массива
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
Пример 3: сумма и среднее значение элементов массива
#include <iostream>
using namespace std;
int main() {
double numbers[] = {7, 5, 6, 12, 35, 27};
double sum = 0;
double count = 0;
double average;
cout << "The numbers are: ";
// Вывод элементов и расчет суммы через range-based for
for (const double &n : numbers) {
cout << n << " ";
sum += n;
++count;
}
cout << "\nTheir Sum = " << sum << endl;
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
Этот пример демонстрирует, как range-based цикл упрощает обход, когда размер массива неизвестен на этапе компиляции.
Выход за границы массива в C++
Массивы размером 10 имеют валидные индексы от 0 до 9. Обращение к индексу 10 или выше вызывает неопределенное поведение, которое может проявиться как аварийное завершение или повреждение данных.
Язык C
- Массивы в C#: объявление, инициализация и операции
- Многомерные массивы в C#: двумерные массивы с примерами кода
- Зубчатые массивы в C#: объявление, инициализация и доступ
- Освоение операторов C++: полное руководство с практическими примерами
- Комментарии в C++: лучшие практики для читаемого и поддерживаемого кода
- Как передавать массивы в функции в C++: практическое руководство
- Техники копирования массивов в Java: подробное руководство
- Массивы в C++: объявление, инициализация и работа с указателями
- Динамическое выделение массивов в C++: практическое руководство с примерами кода
- MATLAB: Мастерство работы с многомерными и специальными массивами