Описание тега struct

Ключевое слово в различных языках программирования с синтаксисом, аналогичным C или производным от C (C++, C#, Swift, Go, Rust и т. Д.). Используйте специальный тег языка программирования, чтобы отмечать вопросы, связанные с использованием структуры, поскольку синтаксис и семантика могут зависеть от языка. Keyword определяет или объявляет тип данных, состоящий из других типов данных. Каждый член структуры имеет свою собственную область памяти (в отличие от ʻunion`, члены которой совместно используют одну область памяти).

А struct состоит из последовательности имен полей и их типов (struct члены), например:

struct s {
    int   *i;                // pointer to an int
    char  *s;                // pointer to a char
    double d;                // a double
    int (*pFunc)(char *, int);  // pointer to a function
};

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

struct bits {
    unsigned int b1 : 1;
    unsigned int b2 : 1;
    unsigned int b3 : 1;
    unsigned int b4 : 1;
    unsigned int b5 : 1;
    unsigned int b6 : 1;
    unsigned int b7 : 1;
    unsigned int b8 : 1;
};

Каждый член struct имеет свою собственную область памяти в отличие от union в котором члены разделяют одну и ту же область памяти.

Синтаксис для определения / объявления struct а также то, что можно включить в struct определение / объявление варьируется между различными языками стиля C, в которых используется ключевое слово (например, функции-члены не разрешены в C, но присутствуют в C++, хотя оба допускают указатель на функцию).

Синтаксис для указания и использования struct для определения / объявления переменных могут незначительно отличаться между различными языками программирования в стиле C (s myVar; против struct s myVar;)

В динамических языках обычно используется некоторая форма ассоциативного массива вместо structс. В семействе языков Pascal эти типы дат называютсяrecordс.

Ссылки