Разница между структурой и союзом

Что такое структура?

Структура - это определяемый пользователем тип данных на языке программирования C, который объединяет вместе логически связанные элементы данных разных типов.

Все элементы структуры хранятся в непрерывных ячейках памяти. Переменная структурного типа может хранить более одного элемента данных разных типов под одним именем.

В этом руководстве вы узнаете:

Что такое Союз

Union - это тип данных, определяемый пользователем, как и структура. Union объединяет вместе объекты разных типов и размеров. Переменная объединения выделяет пространство памяти, равное пространству для хранения наибольшей переменной объединения. Это позволяет различным типам объектов находиться в одном месте.

Синтаксис объявления структуры

 struct [name of the structure] { type member1; type member2; type member3; }; 

Структура объявляется с использованием ключевого слова struct и имени структуры. Номер 1, номер 2, номер 3 - это отдельные элементы структуры. Часть тела заканчивается точкой с запятой (;).

Пример структуры в программировании на C

 #include struct student { char name[60]; int roll_no; float marks; } sdt; int main() { printf('Enter the following information:
'); printf('Enter student name: '); fgets(sdt.name, sizeof(sdt.name), stdin); printf('Enter student roll number: '); scanf('%d', & sdt. roll_no); printf('Enter students marks: '); scanf('%f', & sdt.marks); printf('The information you have entered is: 
'); printf('Student name: '); printf('%s', sdt.name); printf('Student roll number: %d
', sdt. roll_no); printf('Student marks: %.1f
', sdt.marks); return 0; } 

В приведенной выше программе создается структура под названием студент. Эта структура имеет три элемента данных: 1) имя (строка), 2) roll_no (целое число) и 3) метки (число с плавающей запятой).

После этого создается структурная переменная sdt для хранения информации об учащемся и отображения ее на экране компьютера.

Выход:

Введите следующую информацию:

Введите имя студента: Джеймс

Введите номер списка учеников: 21

Введите оценки студента: 67

Вы ввели следующую информацию:

Имя студента: Джон

Номер ученического списка: 21

Оценки студентов: 67.0

Синтаксис объявления союза

 union [name of union] { type member1; type member2; type member3; }; 

Union объявляется с использованием ключевого слова union и имени union. №1, №2, №3 - индивидуальные члены союза. Часть тела заканчивается точкой с запятой (;).

Пример объединения в программировании на C

 #include union item { int x; float y; char ch; }; int main( ) { union item it; it.x = 12; it.y = 20.2; it.ch = 'a'; printf('%d
', it.x); printf('%f
', it.y); printf('%c
', it.ch); return 0; } 

Выход:

1101109601

20.199892

к

В приведенной выше программе вы можете видеть, что значения x и y искажены. Только переменная ch выводит ожидаемый результат. Это связано с тем, что при объединении область памяти распределяется между всеми типами данных-членов.

Следовательно, единственный член данных, значение которого в настоящее время хранится, будет занимать место в памяти. Наконец, значение переменной ch было сохранено, поэтому значение остальных переменных потеряно.

Структура Vs. Союз

Вот важное различие между структурой и объединением:

Состав Союз
Вы можете использовать ключевое слово struct для определения структуры.Вы можете использовать ключевое слово union для определения объединения.
Каждому члену в структуре назначается уникальная ячейка памяти.В совокупности ячейка памяти используется всеми членами данных.
Изменение значения одного элемента данных не повлияет на другие элементы данных в структуре.Изменение значения одного элемента данных изменит значение других элементов данных в объединении.
Это позволяет вам инициализировать сразу несколько членов.Это позволяет вам инициализировать только первый член объединения.
Общий размер структуры - это сумма размеров каждого члена данных.Общий размер объединения - это размер самого большого члена данных.
В основном он используется для хранения различных типов данных.Он в основном используется для хранения одного из множества доступных типов данных.
Он занимает место для каждого члена, записанного во внутренних параметрах.Он занимает место для члена, имеющего наибольший размер, указанный во внутренних параметрах.
Вы можете получить любого участника за раз.Вы можете получить доступ к одному члену союза за раз.
Он поддерживает гибкий массив.Он не поддерживает гибкий массив.

Преимущества конструкции

Вот плюсы / преимущества использования структуры:

  • Структуры собирают более одного фрагмента данных об одном и том же предмете в одном месте.
  • Это полезно, когда вы хотите собрать данные о похожих типах данных и параметрах, таких как имя, фамилия и т. Д.
  • Его очень легко поддерживать, так как мы можем представить всю запись, используя одно имя.
  • В структуре мы можем передать полный набор записей любой функции с помощью одного параметра.
  • Вы можете использовать массив структур для хранения большего количества записей схожих типов.

Преимущества союза

Вот плюсы / преимущества использования union:

  • Он занимает меньше памяти по сравнению со структурой.
  • Когда вы используете union, только последняя переменная может быть доступна напрямую.
  • Объединение используется, когда вам нужно использовать одну и ту же ячейку памяти для двух или более элементов данных.
  • Это позволяет вам хранить данные только одного члена данных.
  • Его выделенное пространство равно максимальному размеру элемента данных.

Недостатки конструкции

Вот минусы / недостатки использования структуры:

  • Если сложность ИТ-проекта выходит за рамки, им становится сложно управлять.
  • Изменение одной структуры данных в коде требует изменений во многих других местах. Поэтому изменения становится трудно отслеживать.
  • Структура работает медленнее, поскольку требует места для хранения всех данных.
  • Вы можете получить любой член в структуре за раз, тогда как вы можете получить доступ к одному члену за раз в объединении.
  • Структура занимает пространство для каждого члена, записанного во внутренних параметрах, в то время как объединение занимает пространство для члена, имеющего наибольший размер, записанный во внутренних параметрах.
  • Структура поддерживает гибкий массив. Union не поддерживает гибкий массив.

Недостатки союза

Вот минусы / недостатки использования union:

  • Вы можете использовать только одного члена профсоюза одновременно.
  • Все переменные объединения нельзя инициализировать или использовать с разными значениями одновременно.
  • Союз выделяет единое хранилище для всех своих членов.

КЛЮЧЕВЫЕ ОТЛИЧИЯ:

  • Каждому члену в структуре назначается уникальная ячейка памяти, в то время как в совокупности ячейка памяти используется всеми элементами данных.
  • Изменение значения одного элемента данных не повлияет на другие элементы данных в структуре, тогда как изменение значения одного элемента данных изменит значение других элементов данных в объединении.
  • Структура в основном используется для хранения различных типов данных, в то время как объединение в основном используется для хранения одного из многих типов данных.
  • В структуре вы можете получить любой член за раз, с другой стороны, в union вы можете получить доступ к одному члену за раз.
  • Структура поддерживает гибкий массив, а объединение не поддерживает гибкий массив.