Создание массива
В предыдущем уроке, о циклах, вы научились повторять код. В этом уроке вы научитесь хранить много значений под одним именем.
Представьте, что вы хотите сохранить свои баллы за пять тестов. С тем, что вы знаете сейчас, понадобилось бы пять переменных:
int score1 = 80;
int score2 = 92;
int score3 = 75;
int score4 = 60;
int score5 = 88;Это много писать, а для тридцати тестов понадобилось бы тридцать переменных. Хуже того, цикл не может пройти по ним: score1 и score2 — просто два имени, которые никак не связаны друг с другом. Для этого и нужен массив. Массив хранит несколько значений одного типа под одним именем:
int scores[5] = {80, 92, 75, 60, 88};Значения в массиве — это его элементы. В этом массиве пять элементов в определённом порядке: 80 — первый, 88 — последний.
Разберём строку слева направо:
int— тип данных элементов. У всех элементов массива один тип, так что в этом массиве лежат только целые числа.scores— имя массива. К нему применяются те же правила, что и к именам переменных.[5]в квадратных скобках — это размер массива: число его элементов.- В фигурных скобках
{ }перечислены элементы через запятую.
Размер можно не писать. Если оставить квадратные скобки пустыми, компилятор сам посчитает значения в фигурных скобках и сделает массив ровно такого размера:
int scores[] = {80, 92, 75, 60, 88};Это тот же массив из пяти элементов. Массивы других типов создаются так же, например цены в магазине или ответы на викторину:
double prices[] = {29.90, 149.00, 99.50};
char answers[] = {'a', 'c', 'b'};В массиве int лежат только целые числа. Если записать в него десятичное число 92.5, элемент получит просто 92. Дробная часть отбрасывается, и никакого сообщения об ошибке вы не увидите.
Размер массива фиксирован. Он задаётся при создании массива и позже не меняется: добавить шестой элемент в scores нельзя. Даже если вы пока не знаете значений, нужно указать, сколько будет элементов. Если не написать ни размер, ни значения, как в int scores[];, программа не скомпилируется:
main.c:4:9: error: definition of variable with array type needs an explicit size or an initializerВ сообщении говорится, что переменной-массиву нужен явный размер или начальные значения (инициализатор). Компилятор должен знать, сколько места в памяти компьютера нужно выделить под массив.
Чтобы вывести один элемент, напишите его номер в квадратных скобках после имени массива. scores[0] — первый элемент массива scores:
int scores[] = {80, 92, 75, 60, 88};
printf("%d\n", scores[0]);Это выведет:
80Почему у первого элемента номер 0, вы узнаете в следующем упражнении. Программа в редакторе таким же образом выводит голы первого матча.
Задание
- 1
Под комментарием создайте массив целых чисел с именем
scoresразмером4и элементами85,92,78и90именно в таком порядке. - 2
Под массивом выведите первый результат с подписью, так же, как программа выводит голы первого матча. В выводе должна быть строка
Первый результат: 85.