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

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 s. Языки семейства Pascal ссылаются на эти типы дат как record s.

Рекомендации