Пример программы с использованием массива Здесь мы можем наблюдать как определение, так и индексирование массива:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include int main()
{
int array[5]; // массив из пяти чисел
array[0] = 3; // индекс первого элемента - 0 (нулевой элемент)
array[1] = 2;
array[2] = 4;
array[3] = 8;
array[4] = 12; // индекс последнего элемента - 4
std::cout << "The array element with the smallest index has the value " << array[0] << "\n";
std::cout << "The sum of the first 5 numbers is " << array[0] + array[1] + array[2] + array[3] + array[4] << "\n";
return 0;
}
Результат выполнения программы:
The array element with the smallest index has the value 3 The sum of the first 5 numbers is 29
Типы данных и массивы
Массив может быть любого типа данных. Например, объявляем массив типа double:
1
2
3
4
5
6
7
8
9
10
11
12
13
#include int main()
{
double array[3]; // выделяем 3 переменные типа double
array[0] = 3.5;
array[1] = 2.4;
array[2] = 3.4;
std::cout << "The average is " << (array[0] + array[1] + array[2]) / 3 << "\n";
return 0;
}
Результат выполнения программы:
The average is 3.1
Массивы также можно сделать из структур, например:
1
2
3
4
5
6
struct Rectangle
{
int length;
int width;
};
Rectangle rects[4]; // объявляем массив с 4-мя прямоугольниками
Чтобы получить доступ к члену структуры из элемента массива, сначала нужно выбрать элемент массива, затем использовать оператор выбора члена структуры, а затем требуемый член структуры:
1
rects[0].length = 15;
Индексы массивов В языке C++ индексы массивов всегда должны быть интегрального типа данных (т.е. типа char, short, int, long, long long, bool и т.д.). Эти индексы могут быть либо константными значениями, либо неконстантными значениями. Например:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int array[4]; // объявляем массив длиной 4
// Используем литерал (константу) в качестве индекса
array[2] = 8; // хорошо
// Используем перечисление (константу) в качестве индекса
enum Animals
{
ANIMAL_CAT = 3
};
array[ANIMAL_CAT] = 5; // хорошо
// Используем переменную (не константу) в качестве индекса
short index = 4;
array[index] = 8; // хорошо
Объявление массивов фиксированного размера
При объявлении массива фиксированного размера, его длина (между квадратными скобками) должна быть константой типа compile-time (которая определяется во время компиляции). Вот несколько разных способов объявления массивов с фиксированным размером:
// Используем литерал
int array[7]; // хорошо
// Используем макрос-объект с текст_замена в качестве символьной константы
#define ARRAY_WIDTH 4
int array[ARRAY_WIDTH]; // синтаксически хорошо, но не делайте этого
// Используем символьную константу
const int arrayWidth = 7;
int array[arrayWidth]; // хорошо
// Используем перечислитель
enum ArrayElements
{
MIN_ARRAY_WIDTH = 3
};
int array[MIN_ARRAY_WIDTH]; // хорошо
// Используем неконстантную переменную
int width;
std::cin >> width;
int array[width]; // плохо: width должна быть константой типа compile-time!
// Используем константную переменную типа runtime
int temp = 8;
const int width = temp;
int array[width]; // плохо: здесь width является константой типа runtime, но должна быть константой типа compile-time!
Обратите внимание, в двух последних случаях мы должны получить ошибку, так как длина массива не является константой типа compile-time. Некоторые компиляторы могут разрешить использование таких массивов, но они являются некорректными в соответствии со стандартами языка C++ и не должны использоваться в программах, написанных на C++.