Главная
Новости
Строительство
Ремонт
Дизайн и интерьер




30.11.2022


25.08.2022


11.08.2022


09.08.2022


25.07.2022





Яндекс.Метрика





         » » Структура (язык Си)

Структура (язык Си)

27.05.2022


В языке Си, структура (struct) — композитный тип данных, инкапсулирующий без сокрытия набор значений различных типов. Порядок размещения значений в памяти задаётся при определении типа и сохраняется на протяжении времени жизни объектов, что даёт возможность косвенного доступа (например, через указатели).

Пример объявления структуры:

struct str_name { int member_1; float member_2; char member_3[256]; /* ... */ }; // объявление структуры struct str_name struct0; // объявление и инициализация структуры struct str_name struct1 = {1, 3.1416f, "doit" /* ... */}; // объявление структуры и поимённая инициализация полей // поддерживается стандартом, начиная с C99 struct str_name struct2 = {.member_1=2, .member_2=3.1416f, .member_3="doit" /* ... */};

Тип «структура» в Си допускает рекурсию, то есть наличие в своём составе указателей, ссылающихся на объекты этой самой структуры. Таким образом, структуры в Си объединяют в себе функциональность не только кортежей и записей, но и алгебраических типов. Для лёгкого представления говорят, что структура — это класс, у которого все поля по умолчанию public.

В C++ понятие структуры было расширено до класса, то есть была добавлена возможность включения в структуру функций-методов. Главное отличие состоит в том, что в соответствии с «правилом трёх» структуры всегда имеют конструктор, даже если явное его определение в исходном коде отсутствует. Таким образом, говорить о «структурах в С++» некорректно. То же относится к C#.

В языке Go используются структуры, по функциональности приближенные к классам (к структуре можно привязать методы), хотя и отсутствуют некоторые принципы ООП (например, наследование)