Куча (структура данных)
- 1 year ago
- 0
- 0
В языке
Си
,
структура
(
struct
) —
композитный тип данных
,
инкапсулирующий
без
сокрытия
набор
значений
различных типов. Порядок размещения значений в памяти задаётся при определении типа и сохраняется на протяжении времени жизни объектов, что даёт возможность косвенного доступа (например, через
указатели
).
Пример объявления структуры:
struct str_name
{
int member_1;
float member_2;
char member_3[256];
/* ... */
};
// объявление структуры
struct str_name struct0;
// объявление и инициализация структуры
struct str_name struct1 = {1, 3.1415f, "doit" /* ... */};
// объявление структуры и поимённая инициализация полей
// поддерживается стандартом, начиная с C99
struct str_name struct2 = {.member_1=2, .member_2=3.1415f, .member_3="doit" /* ... */};
Тип «структура» в Си допускает рекурсию , то есть наличие в своём составе указателей, ссылающихся на объекты этой самой структуры. Таким образом, структуры в Си объединяют в себе функциональность не только кортежей и записей , но и алгебраических типов . Для лёгкого представления говорят, что структура — это класс, у которого все поля по умолчанию public .
В C++ понятие структуры было расширено до класса , то есть была добавлена возможность включения в структуру функций-методов . Главное отличие состоит в том, что в соответствии с «правилом трёх» структуры всегда имеют конструктор , даже если явное его определение в исходном коде отсутствует. Таким образом, говорить о « структурах в C++ » некорректно. То же относится к C# .
В языке Go используются структуры, по функциональности приближенные к классам (к структуре можно привязать методы), хотя и отсутствуют некоторые принципы ООП (например, наследование )