Массивы
Массив — это набор переменных одного типа под общим именем. У каждой ячейки есть номер, который называется индексом. Массив удобен, когда нужно хранить несколько похожих значений: показания датчиков, команды моторов или оценки за попытки.
Индексы массива начинаются с нуля. Если размер массива равен 5, допустимые индексы: 0, 1, 2, 3, 4. Перед чтением ячейки ей нужно задать значение.
Массив как набор ячеек
имя: a
индекс: 0 1 2 3
значение: 10 20 30 40
Объявление массива:
int a[4] = {10, 20, 30, 40};
Здесь создан массив из четырёх целых чисел.
Первый пример
#include <iostream>
using namespace std;
int main() {
int a[3] = {10, 20, 30};
cout << a[0] << endl;
cout << a[1] << endl;
cout << a[2] << endl;
return 0;
}
Вывод:
10
20
30
Индекс 3 в этом массиве уже запрещён. Последний индекс равен 2, потому что счёт начинается с нуля.
Изменение ячейки
#include <iostream>
using namespace std;
int main() {
int a[3] = {10, 20, 30};
a[1] = 99;
cout << a[0] << endl;
cout << a[1] << endl;
cout << a[2] << endl;
return 0;
}
Вывод:
10
99
30
Ячейка массива ведёт себя как обычная переменная своего типа.
Перед чтением задайте значения
Плохой пример:
#include <iostream>
using namespace std;
int main() {
int a[3];
cout << a[0] << endl;
return 0;
}
Значение a[0] не задано. На одних системах можно случайно увидеть 0, на других — мусорное число. На микроконтроллерах такая ошибка особенно опасна.
Правильно:
#include <iostream>
using namespace std;
int main() {
int a[3] = {0, 0, 0};
cout << a[0] << endl;
return 0;
}
Меньше значений, чем ячеек
int a[4] = {5, 6};
Первые две ячейки получат 5 и 6, остальные будут заполнены нулями. Но лучше для первых программ записывать все значения явно, чтобы не гадать, что произошло.
Массивы и роли
#include <iostream>
using namespace std;
int main() {
int power[2] = {80, 75};
cout << "left = " << power[0] << endl;
cout << "right = " << power[1] << endl;
return 0;
}
Здесь power[0] — левый мотор, power[1] — правый мотор. В маленьком примере это допустимо. В большой программе лучше использовать понятные структуры или классы, но они будут изучаться позже.
Что пока не делаем
В этом уроке мы не используем циклы, функции и дополнительные библиотеки. Циклы появятся позже и помогут обрабатывать массивы короче. Сейчас важно понять саму идею: массив — это несколько ячеек с индексами.
Практика
- Создайте массив
aиз трёх чисел и выведите все ячейки. - Измените вторую ячейку и снова выведите массив.
- Создайте массив
powerиз двух значений для левого и правого мотора. - Нарисуйте массив из пяти ячеек и подпишите индексы.
- Объясните, почему индекс
5запрещён для массива размера5.
Проверьте себя
- Что такое массив?
- С какого индекса начинается массив в C++?
- Какой последний индекс у массива из четырёх элементов?
- Почему нельзя читать незаданную ячейку?
- Как изменить значение одной ячейки?
Сначала ответьте без подсказки. Ответ можно считать полным, если вы:
- формулируете основную мысль своими словами;
- называете важные условия, ограничения или меры безопасности;
- для схемы, кода или расчёта показываете ход решения и ожидаемый результат.
Если один из пунктов объяснить не получается, найдите соответствующую главу статьи, перечитайте её и повторите ответ.
Словарь статьи
| Термин | Значение |
|---|---|
| массив | набор однотипных ячеек под одним именем |
| элемент | одна ячейка массива |
| индекс | номер элемента |
| размер | количество элементов в массиве |
| выход за границу | обращение к несуществующему индексу |
Связанные темы
- Переменные и типы данных — из чего состоят ячейки массива.
- Векторы — массив с изменяемым размером.
- Циклы — обработка массива по счётчику.
Источники
- C++ Working Draft. Arrays: https://eel.is/c++draft/dcl.array
- Microsoft Learn. Arrays in C++: https://learn.microsoft.com/en-us/cpp/cpp/arrays-cpp