WikiSort.ru - Программирование

ПОИСК ПО САЙТУ | о проекте

В языке Си, структура (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 struct2 = {.member_1=2, .member_2=3.1416f, .member_3="doit" /* ... */};

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

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

Примечания

  1. struct (C++). Справочник по языку C++. msdn.microsoft.com. Проверено 16 ноября 2017.

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии