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

Поделись знанием:
(перенаправлено с «Структура (программирование)»)
Перейти к: навигация, поиск

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

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

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 struct3 = {.member_1=2, .member_2=3.1416f, .member_3="doit" /* ... */};

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

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

Напишите отзыв о статье "Структура (язык Си)"

Отрывок, характеризующий Структура (язык Си)

– На завтра! – сказал он, быстро отыскивая страницу и от параграфа до другого отмечая жестким ногтем.
Княжна пригнулась к столу над тетрадью.
– Постой, письмо тебе, – вдруг сказал старик, доставая из приделанного над столом кармана конверт, надписанный женскою рукой, и кидая его на стол.
Лицо княжны покрылось красными пятнами при виде письма. Она торопливо взяла его и пригнулась к нему.
– От Элоизы? – спросил князь, холодною улыбкой выказывая еще крепкие и желтоватые зубы.
– Да, от Жюли, – сказала княжна, робко взглядывая и робко улыбаясь.
– Еще два письма пропущу, а третье прочту, – строго сказал князь, – боюсь, много вздору пишете. Третье прочту.
– Прочтите хоть это, mon pere, [батюшка,] – отвечала княжна, краснея еще более и подавая ему письмо.
– Третье, я сказал, третье, – коротко крикнул князь, отталкивая письмо, и, облокотившись на стол, пододвинул тетрадь с чертежами геометрии.
– Ну, сударыня, – начал старик, пригнувшись близко к дочери над тетрадью и положив одну руку на спинку кресла, на котором сидела княжна, так что княжна чувствовала себя со всех сторон окруженною тем табачным и старчески едким запахом отца, который она так давно знала. – Ну, сударыня, треугольники эти подобны; изволишь видеть, угол abc…
Княжна испуганно взглядывала на близко от нее блестящие глаза отца; красные пятна переливались по ее лицу, и видно было, что она ничего не понимает и так боится, что страх помешает ей понять все дальнейшие толкования отца, как бы ясны они ни были. Виноват ли был учитель или виновата была ученица, но каждый день повторялось одно и то же: у княжны мутилось в глазах, она ничего не видела, не слышала, только чувствовала близко подле себя сухое лицо строгого отца, чувствовала его дыхание и запах и только думала о том, как бы ей уйти поскорее из кабинета и у себя на просторе понять задачу.