В языке программирования C существуют предопределенные типы данных и определяемые пользователем типы данных. Примерами определяемых пользователем типов данных являются структуры и объединения в C.
В Structure и Union пользователи могут определять различные типы данных и функции-члены для доступа ко всем переменным. Хотя они оба следуют одному и тому же синтаксису, между ними есть огромная разница.
Основные выводы
- Структуры в языке C позволяют группировать переменные различных типов данных под одним именем, сохраняя при этом индивидуальное распределение памяти для каждого члена, что позволяет одновременно хранить значения всех членов.
- Объединения в языке C также позволяют группировать переменные разных типов данных под одним именем, но при этом использовать единое выделение памяти для всех членов, что означает, что одновременно может храниться значение только одного члена.
- Основное различие между структурами и объединениями заключается в распределении памяти и хранении значений: структуры используют отдельную память для каждого члена, а объединения разделяют память между всеми членами.
Структура против объединения в языке C
В структуре каждый элемент входных данных имеет определенное расположение в памяти. В результате он способен хранить многочисленные значения для каждого элемента. В то время как в объединении для всех элементов входных данных выделяется одна общая память. В результате он сохраняет одно значение за раз для всех элементов.

Например
Работа по конструкции
{
Международные деньги;
Имя персонажа;
}с1;
В этом случае размер памяти, выделенной для структуры, составит 2+1 = 3 байта. с размер целого числа — 1 байт, а размер символа — 2 байта. Следовательно, размер будет 3 байта.
` профсоюзная работа
{
Международные деньги;
Имя персонажа;
}с1;
В объединении размер выделяемой памяти составит 2 байта, так как максимальный размер типа данных в объединении составляет 2 байта, т.е. символьный тип данных.
Сравнительная таблица
Параметр для сравнения | Союз | Структура: |
---|---|---|
Определение ключевого слова | В нем используется ключевое слово «союз». | Использует ключевое слово «struct». |
Размер памяти | Размер равен элементу наибольшего размера. | Размер равен сумме всех элементов в структуре. |
Общая память | Вся память элемента используется совместно с другими элементами. | Элементы структуры не имеют общей памяти. |
Доступ к элементу | В один момент времени возможен доступ только к одному элементу. | Доступ к любому количеству элементов возможен в любой момент времени. |
Пример | пример союза { Типы данных и члены }объект; | пример структуры { Типы данных и члены }объект; |
Что такое структура в языке C?
Структура представляет собой определенную пользователем группу данных, которая собирает различные типы данных. Следующий пример будет весьма полезен. Предположим, программисту нужно хранить такие данные, как студент, имя, класс, адрес и многое другое.
Ну, есть два способа подойти этой проблема, одна из которых — создание различных типов данных, а другая — создание структуры.
В этом случае структура будет выгодна, так как если вы создаете переменные отдельно, вам нужно будет создать много переменных для каждого студента, и это будет действительно хаосом. Вместо этого структуру можно использовать снова и снова.
Структуру можно создать с помощью ключевого слова struct.
Например
Структура имя_структуры{
Тип данных имя_типа_данных;
Тип данных имя_типа_данных;
Тип данных имя_типа_данных;
Тип данных имя_типа_данных;
...
};
Если вы хотите получить доступ к любому из членов данных, вам необходимо создать объект, as
Структура имя_структуры имя_объекта;
С помощью синтаксиса object_name.datatype_name вы сможете получить доступ к типу данных в структуре.
Что такое Union в языке C?
Подобно структурам, объединение — это еще один определяемый пользователем тип данных в языке программирования C. Определяемый пользователем тип данных создается всякий раз, когда программист определяет объединение, но при этом отсутствует место в памяти.
Если вы хотите выделить память, вам нужно создать переменные в union. Union имеет свойство, которое не позволяет ни одному программисту обращаться к типам данных более одного раза.
Следовательно, в объединении программист может получить доступ к одному члену данных за раз. Давайте рассмотрим небольшой пример.
Союз union_name
{
Тип_данных Имя_типа_данных;
Тип_данных Имя_типа_данных;
Тип_данных Имя_типа_данных;
Тип_данных Имя_типа_данных;
};
В приведенном выше примере показана базовая структура объединения. Это способ, которым программист создает объединение. Если вы хотите получить доступ к любому типу данных в объединении, вам нужно использовать его. Оператор похож на структуру.
Union union_name obj name; С помощью приведенного выше оператора вы можете создать объект, который поможет вам получить доступ к любому члену данных в объединении с помощью оператора точки.
Основные различия между структурой и объединением в языке C
- Структура — это определяемый пользователем тип данных, который хранит типы данных разных видов. Также он используется для представления коллекции значений типов данных. Если программисту необходимо определить объединение, то ему необходимо использовать ключевое слово struct. В то же время объединению необходимо ключевое слово union для определения.
- В структуре все типы данных хранятся в разных местах, и вы можете получить доступ к нескольким членам данных. В то время как в объединении все члены данных разделяют точное местоположение памяти, и только один член данных может быть доступен в каждый момент времени.
- В структуре для инициализации любого члена можно инициализировать несколько членов одновременно, но в случае объединения можно инициализировать только первый член.
- Общий размер структуры зависит от суммы размеров членов данных, тогда как в случае объединения размер равен тому члену данных, размер которого наибольший среди всех.
- В структуре каждый тип данных имеет различное распределение памяти, тогда как в объединении для самого большого члена данных выделяется одна память.
