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

Содержание:

Anonim

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

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

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

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

  • Что такое структура?
  • Что такое Союз
  • Синтаксис объявления структуры
  • Пример структуры в программировании на C
  • Синтаксис объявления союза
  • Пример объединения в программировании на C
  • Структура Vs. Союз
  • Преимущества конструкции
  • Преимущества союза
  • Недостатки конструкции
  • Недостатки союза

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

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:\n");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: \n");printf("Student name: ");printf("%s", sdt.name);printf("Student roll number: %d\n", sdt. roll_no);printf("Student marks: %.1f\n", 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" и имени объединения. Номер 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\n", it.x);printf("%f\n", it.y);printf("%c\n", it.ch);return 0;}

Выход:

1101109601

20.199892

а

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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