Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Структурированный тип в языке программирования C
Structured type in C programming language
Структура в языке программирования C (и многих его производных) — это композитный тип данных (или запись), определяющий физически сгруппированный список переменных под одним именем в блоке памяти, позволяя обращаться к различным переменным через единый указатель или по имени объявленной структуры, которое возвращает тот же адрес. Тип данных struct может содержать другие типы данных, поэтому он используется для записей со смешанными типами данных, таких как запись каталога жесткого диска (длина файла, имя, расширение, физический адрес и т. д.) или другие записи со смешанными типами (имя, адрес, телефон, баланс и т. д.). Структура C напрямую ссылается на непрерывный блок физической памяти, обычно ограниченный границами длины слова. Она соответствует аналогичной функции, доступной в некоторых ассемблерах для процессоров Intel. Поскольку структура представляет собой блок непрерывной памяти, каждое поле внутри неё находится на определенном фиксированном смещении от начала. Так как содержимое структуры хранится в непрерывной памяти, оператор `sizeof` необходимо использовать для получения количества байтов, требуемых для хранения конкретного типа структуры, как и для примитивных типов данных. Выравнивание отдельных полей в структуре (относительно границ слов) зависит от реализации и может включать в себя добавление отступов, хотя современные компиляторы обычно поддерживают директиву `#pragma pack`, которая изменяет размер в байтах, используемый для выравнивания. В языке C++ структура идентична классу C++, но имеет другую видимость по умолчанию: члены класса по умолчанию являются закрытыми, а члены структуры — открытыми.
A struct in the C programming language (and many derivatives) is a composite data type (or record) declaration that defines a physically grouped list of variables under one name in a block of memory, allowing the different variables to be accessed via a single pointer or by the struct declared name which returns the same address. The struct data type can contain other data types so is used for mixed data type records such as a hard drive directory entry (file length, name, extension, physical address, etc. ), or other mixed type records (name, address, telephone, balance, etc.). The C struct directly references a contiguous block of physical memory, usually delimited (sized) by word length boundaries. It corresponds to the similarly named feature available in some assemblers for Intel processors. Being a block of contiguous memory, each field within a struct is located at a certain fixed offset from the start. Because the contents of a struct are stored in contiguous memory, the sizeof operator must be used to get the number of bytes needed to store a particular type of struct, just as it can be used for primitives. The alignment of particular fields in the struct (with respect to word boundaries) is implementation specific and may include padding, although modern compilers typically support the #pragma pack directive, which changes the size in bytes used for alignment. In the C++ language, a struct is identical to a C++ class but has a different default visibility: class members are private by default, whereas struct members are public by default.
На других языках
Структурный тип данных в C был создан на основе структурного типа данных ALGOL 68. Как и в C, тип данных struct в C# (Structure в Visual Basic NET) аналогичен классу. Основное различие между структурой и классом в этих языках заключается в том, что любые изменения структуры, переданной в функцию в качестве аргумента, не отразятся на исходной переменной (если не используется передача по ссылке). Это отличается от C++, где классы или структуры могут быть статически или динамически выделены либо в стеке (как в C#), либо в куче, с использованием явного указателя. В C++ единственное различие между структурой и классом состоит в том, что члены и базовые классы структуры по умолчанию являются публичными. (Класс, определенный с помощью ключевого слова class, по умолчанию имеет приватные члены и базовые классы.)
The struct data type in C was derived from the ALGOL 68 struct data type. Like its C counterpart, the struct data type in C# (Structure in Visual Basic NET) is similar to a class. The biggest difference between a struct and a class in these languages is that when a struct is passed as an argument to a function, any modifications to the struct in that function will not be reflected in the original variable (unless pass by reference is used). This differs from C++, where classes or structs can be statically allocated or dynamically allocated either on the stack (similar to C#) or on the heap, with an explicit pointer. In C++, the only difference between a struct and a class is that the members and base classes of a struct are public by default. (A class defined with the class keyword has private members and base classes by default.)