Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Массивы в C: объявление, инициализация и распространённые операции

Массивы в 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
Массивы в C: объявление, инициализация и распространённые операции

Ключевые моменты:


Инициализация массива

Инициализация при объявлении:

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
Массивы в C: объявление, инициализация и распространённые операции

Изменение элементов

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 — размер известен только во время выполнения
Внимание: VLA выделяются в стеке. Большие размеры вызывают переполнение стека. В C11 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

  1. Массивы в C#: объявление, инициализация и операции
  2. Зубчатые массивы в C#: объявление, инициализация и доступ
  3. Как передавать массивы в функции в C++: практическое руководство
  4. Как передавать одномерные и двумерные массивы в функции в C — практическое руководство
  5. Понимание взаимосвязи между массивами и указателями в C
  6. Техники копирования массивов в Java: подробное руководство
  7. Массивы в C++: объявление, инициализация и работа с указателями
  8. Динамическое выделение массивов в C++: практическое руководство с примерами кода
  9. Учебник по массивам в Java: объявление, создание и инициализация с примерами кода
  10. MATLAB: Мастерство работы с многомерными и специальными массивами