Структура внутри структуры в C - PullRequest
0 голосов
/ 09 декабря 2018

пытаюсь понять, что делает "комплект снаряжения";в этом коде, но безуспешно.Я также пытался найти решение в Интернете, и я не нашел.Вот фрагмент кода:

typedef struct {
    float tank_capacity;
    int tank_psi;
    const char *suit_material;
} equipment;

typedef struct scuba {
    const char *name;
    equipment kit;
} diver;

Этот фрагмент взят из примера кода в книге C.

1 Ответ

0 голосов
/ 09 декабря 2018

Когда вы typedef структура, вам больше не нужно использовать ключевое слово struct.

Итак, используя определения выше, вы теперь можете определить данные как:

struct scuba joe;  // here using "struct"
joe.name = "Joe Carver";
joe.kit.tank_capacity = 30.0;
joe.kit.tank_psi = 70;
joe.kit.suit_material = "neoprene";

и

diver jane;  // here not using "struct"
jane.name = "Jane Smith";
jane.kit.tank_capacity = 25.0;
jane.kit.tank_psi = 75;
jane.kit.suit_material = "kevlar";

typedef просто позволяет использовать более короткую запись.Но оба joe и jane считаются одного типа.

Редактировать: Что касается equipment kit, то это "структура в структуре".При использовании этого подхода данные водителя акваланга, описывающие его оборудование, группируются.Это позволяет улучшить организацию кода и данных и считается наилучшей практикой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...