Массивы в C: объявление, инициализация и распространённые операции
Массивы в C
Узнайте, как объявлять, инициализировать и манипулировать массивами в C с практическими примерами, лучшими практиками и рекомендациями по безопасности.

В C массив — это непрерывный блок памяти, хранящий несколько значений одного типа. Например, для хранения 100 целых чисел:
int data[100];
Объявление массива
Синтаксис:
dataType arrayName[arraySize];
Пример:
float mark[5];
Здесь mark может хранить пять значений float. Размер и тип фиксированы после объявления.
Доступ к элементам
Индексы массива начинаются с 0. Для массива размера n последний элемент — array[n-1]. Пример:
mark[0] // первый элемент
mark[4] // последний элемент для размера 5

Ключевые моменты:
- Первый индекс — 0, не 1.
- Для
float(4 байта) каждый следующий индекс увеличивает адрес на 4. - Никогда не обращайтесь за пределами
array[n-1]— это undefined behavior.
Инициализация массива
Инициализация при объявлении:
int mark[5] = {19, 10, 8, 17, 9};
Или пусть компилятор выведет размер:
int mark[] = {19, 10, 8, 17, 9};
Результирующие значения:
mark[0] = 19
mark[1] = 10
mark[2] = 8
mark[3] = 17
mark[4] = 9

Изменение элементов
int mark[5] = {19, 10, 8, 17, 9};
mark[2] = -1; // третий элемент
mark[4] = 0; // пятый элемент
Ввод и вывод
Чтение в элемент массива:
scanf("%d", &mark[2]); // третий элемент
scanf("%d", &mark[i-1]); // i-й элемент (1-базированный)
Печать элемента:
printf("%d", mark[0]); // первый
printf("%d", mark[2]); // третий
printf("%d", mark[i-1]); // i-й
Пример 1: Ввод/вывод массива
#include <stdio.h>
int main() {
int values[5];
printf("Enter 5 integers: ");
for (int i = 0; i < 5; ++i) {
scanf("%d", &values[i]);
}
printf("Displaying integers:\n");
for (int i = 0; i < 5; ++i) {
printf("%d\n", values[i]);
}
return 0;
}
Вывод
Enter 5 integers: 1 -3 34 0 3 Displaying integers: 1 -3 34 0 3
Пример 2: Вычисление среднего
#include <stdio.h>
int main() {
int marks[10], n, sum = 0;
printf("Enter number of elements: ");
scanf("%d", &n);
for (int i = 0; i < n; ++i) {
printf("Enter number%d: ", i + 1);
scanf("%d", &marks[i]);
sum += marks[i];
}
int average = sum / n;
printf("Average = %d", average);
return 0;
}
Вывод
Enter n: 5 Enter number1: 45 Enter number2: 35 Enter number3: 38 Enter number4: 31 Enter number5: 49 Average = 39
Опасность выхода за границы
Обращение к testArray[12] при массиве из 10 элементов ведёт к undefined behavior — крашам, повреждению данных или молчающим ошибкам. Всегда проверяйте индексы перед доступом.
Многомерные массивы
Пока мы рассмотрели одномерные массивы. В следующем руководстве изучим многомерные массивы (массивы массивов) и их эффективное использование.
Массивы переменной длины (VLA) — C99
Стандарт C99 позволяет массивам с размером, определяемым во время выполнения:
int n;
scanf("%d", &n);
int arr[n]; // VLA — размер известен только во время выполнения
malloc/free для динамических массивов.Строки как массивы char
Строки в C — массивы char, заканчивающиеся нуль-терминатором \0:
char str[] = "Hello"; // размер 6: 'H','e','l','l','o','\0'
char str[6] = "Hello"; // то же самое
Стандартные функции: strlen, strcpy, strcat, strcmp (из string.h).
Язык C
- Массивы в C#: объявление, инициализация и операции
- Зубчатые массивы в C#: объявление, инициализация и доступ
- Как передавать массивы в функции в C++: практическое руководство
- Как передавать одномерные и двумерные массивы в функции в C — практическое руководство
- Понимание взаимосвязи между массивами и указателями в C
- Техники копирования массивов в Java: подробное руководство
- Массивы в C++: объявление, инициализация и работа с указателями
- Динамическое выделение массивов в C++: практическое руководство с примерами кода
- Учебник по массивам в Java: объявление, создание и инициализация с примерами кода
- MATLAB: Мастерство работы с многомерными и специальными массивами