Разница между структурой и объединением в C

Ключевая разница - структура против союз в С
 

Массив - это структура данных, поддерживаемая языком Си. Массив может использоваться для хранения элементов данных того же типа. Если есть оператор в виде int marks [10]; тогда метки - это массив, который может хранить десять меток, и все они являются целыми числами. Иногда требуется хранить элементы данных разных типов в одной и той же ячейке памяти. Например, сотрудник может иметь идентификатор сотрудника, имя, отдел, возраст и т. Д. Они имеют разные типы данных. Следовательно, необходимо иметь способ для хранения различных элементов данных в виде единого блока. Структуры и объединения в C используются для хранения элементов данных разных типов в одной и той же ячейке памяти. Структура и объединение схожи, но в основном они различаются из-за выделения памяти. Память, необходимая для хранения структурной переменной, является суммой объема памяти всех членов. Память, необходимая для хранения переменной объединения, - это память, необходимая для самого большого элемента в объединении. То есть ключевое отличие между структурой и объединением в C. В этой статье обсуждается различие между структурой и объединением в C.

СОДЕРЖАНИЕ

1. Обзор и основные отличия
2. Что такое структура в C
3. Что такое Союз в С
4. Сходство между структурой и объединением в С
5. Сравнение бок о бок - структура против объединения в C в табличной форме
6. Резюме

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

Структура является определяемым пользователем типом данных в C. Она помогает комбинировать элементы данных разных типов. Структура может представлять записи. Студент может иметь идентификатор student_id, student_name и т. Д. Вместо того, чтобы хранить каждую переменную в отдельности, все эти различные элементы данных можно объединить в одну единицу, используя структуру. Он определяется с помощью ключевого слова struct. В структуре все члены могут быть доступны в любое время. Далее создается структура производного типа данных Student..

struct Student

intstudent_id;

char student_name [20];

;

Для приведенной выше структуры переменные могут быть объявлены следующим образом.

структура Студент студент1, студент2, студент3;

Есть два способа доступа к членам структуры. То есть с помощью оператора-члена (.) И оператора указателя структуры (->). Доступ к членам можно получить, используя имя_структуры имя участника. Если программист хочет получить доступ к имени ученика 2, он может написать утверждение как printf (student2.student_namename);

См. Ниже программу со структурой.

Рисунок 01: C-программа со структурами

Согласно вышеуказанной программе, Студент является структурой. Он содержит идентификатор студента и имя студента. Две переменные типа структуры объявлены в основной программе. Они называются student1 и student2. Идентификатор студента 1 присваивается со значением 1, используя оператор члена, как student1.student_id = 1. Имя «Энн» - это строка. Поэтому он копируется в член student_name с помощью функции копирования строк strcpy. Идентификатор и имя присваиваются студенту аналогичным образом. Наконец, эти значения печатаются с использованием оператора члена.

Объем памяти, необходимый для хранения структурной переменной, является суммой объема памяти всех членов. Student_id содержит 4 байта, а student_name содержит 20 байтов (по одному байту для каждого символа). Всего 24 байта является суммой объема памяти, требуемого структурой.

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

Объединение - это пользовательский тип данных в C. Он помогает хранить разные типы данных в одной и той же ячейке памяти. Книга может иметь такие свойства, как book_name, цена и т. Д. Вместо создания переменных для каждой из них можно использовать объединение для объединения всех различных типов данных в одну единицу с использованием объединения. Он определяется с помощью ключевого слова 'union'. Далее создается производное объединение данных Book.

unionBook

имя персонажа [20];

двойная цена;

;

Для вышеуказанного объединения переменные могут быть объявлены следующим образом.

союз книга book1, book2;

Есть два способа получить доступ к членам союза. То есть с помощью оператора-члена (.) И оператора указателя структуры (->). Доступ к членам можно получить с помощью union_variable_name. имя участника. Если программист хочет получить доступ к имени книги1, он может написать инструкцию как printf (book1.name);

Пошлите ниже программу с союзом.

Рисунок 02: C-программа, использующая union

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

Рисунок 03: Модифицированная C-программа с объединением

Согласно вышеуказанной программе, Книга - это союз. Book1 и book2 являются переменными типа объединения. Сначала присваивается значение имени book1, и оно печатается. Затем присваивается значение имени book2, и оно печатается. Все участники печатаются правильно, потому что один член используется одновременно. Память, необходимая для хранения объединения, - это память, необходимая для самого большого элемента объединения. В приведенной выше программе имя переменной составляет 20 байт. Это больше, чем цена. Итак, выделение памяти для объединения составляет 20 байт..

Каковы сходства между структурой и объединением в C?

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

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

Структура против Союза в C

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

Резюме - Структура против союз в С

Массив используется для хранения элементов данных того же типа. Иногда необходимо хранить элементы данных разных типов в одной и той же ячейке памяти. Язык программирования C обеспечивает структуру и объединение для выполнения этой задачи. Оба являются пользовательскими типами данных. Память, необходимая для хранения структурной переменной, является суммой объема памяти всех членов. Память, необходимая для хранения переменной объединения, - это память, необходимая для самого большого элемента в объединении. В этом разница между структурой и объединением в C.

Ссылка:

1.Point, учебники. «Структуры в C.», пункт «Учебное пособие», 15 августа 2017 г. Доступно здесь 
2.Point, учебники. «Союзы в Си» , Учебное пособие, 15 августа 2017 г. Доступно здесь