Си для начинающих: структуры данных

Структуры данных позволяют описывать реальные объекты внутри программы. Представьте, что вы создаёте приложение, моделирующее автомобили. Можно создать множество отдельных переменных для описания каждой машины: скорость, название, вес и так далее. Однако такой подход делает код менее удобным и разбросанным. Гораздо эффективнее создать единую структуру, шаблон, содержащий все необходимые характеристики, на основе которого можно создавать объекты – отдельные экземпляры автомобилей.

Создание структуры

Для создания структуры используется ключевое слово struct. После него следует имя структуры (например, car). В фигурных скобках перечисляются характеристики объекта:

struct car {
  int speed;
  char name[50];
  float weight;
};

Обратите внимание на точку с запятой после закрывающей фигурной скобки – это особенность синтаксиса структур в Си. Эта структура служит шаблоном для создания объектов.

Создание и использование объектов

Чтобы создать объект на основе структуры, используется ключевое слово struct, затем имя структуры и имя объекта:

struct car bmw;

Обращение к членам структуры (переменным внутри структуры) осуществляется через оператор точки (.):

bmw.speed = 250;

Для установки строковых значений в массивы символов (например, name) необходимо использовать функцию strcpy:

strcpy(bmw.name, "BMW M5");
bmw.weight = 2000.5;

Без strcpy компилятор выдаст ошибку.

Инициализация объектов

Можно сразу инициализировать значения при создании объекта:

struct car audi = {300, "Audi A8", 2700};

Вывод данных

Обращение к членам структуры для вывода данных:

printf("Audi %s, speed: %d km/h\n", audi.name, audi.speed);
printf("BMW %s, speed: %d km/h\n", bmw.name, bmw.speed);

Структуры в Си — это мощный инструмент для организации данных. Они позволяют создавать новые типы данных, группируя переменные, описывающие один объект. На основе одной структуры можно создавать множество объектов с различными значениями, что значительно упрощает работу с большими объемами данных. Структуры могут использоваться для моделирования самых разнообразных объектов: книг, людей, планет и всего, что можно описать набором характеристик.

Что будем искать? Например,программа