Ключевое слово на различных языках программирования, синтаксис которых подобен или полученный из C (C++, C#, Быстро, Идут, Ржавчина, и т.д.). Используйте определенный тег языка программирования для расчлененных вопросов, включающих использование 'структуры' как синтаксис, и семантика может быть языковозависимой. Ключевое слово определяет или объявляет тип данных, состоявший из других типов данных. У каждого члена структуры есть ее собственная область памяти (в противоположность 'объединению', участники которого совместно используют единственную область памяти).
A 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 };
A 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; };
Каждый член a struct
имеет его собственную область памяти в противоположность a union
в котором участники совместно используют ту же область памяти.
Синтаксис для определения/объявления a struct
а также что возможно включать в a struct
определение/объявление варьируется между различными языками стиля C, которые используют ключевое слово (например, функции членства, не позволенные в C, но находятся в C++, хотя оба позволяют указатель на функцию).
Синтаксис для определения и использования a struct
определить/объявить переменные может варьироваться немного между различными языками программирования стиля C ( s myVar;
по сравнению с struct s myVar;
)
Динамические языки обычно используют некоторую форму ассоциативного массива вместо struct
s. Языковая семья Паскаля относится к этим типам даты как record
s.