Структура и союз

Anonim

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

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

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

Структура используется, когда множество данных необходимо группировать, как каталог, в котором хранится информация о многих членах книги или адресной книге, в которой хранится вся информация об одном контакте - имя, адрес, контактный номер и т. Д. Адрес каждого члена будет в порядке возрастания, что означает, что память каждого элемента будет начинаться с разных значений смещения. Изменение значения одного участника не повлияет на других участников.

Ключевое слово 'struct' используется для определения структуры разных типов данных под одним именем. Например, если вы хотите создать базу данных сотрудника, вам необходимо сохранить имя сотрудника, возраст, телефон и данные о зарплате в одном объекте. Это делается с помощью ключевого слова 'struct', которое затем сообщает компилятору, что структура была объявлена.

struct employee {

имя строки;

возраст струны;

строчный телефон;

строчная зарплата;

} emp1, emp2;

Здесь «employee» - это имя структуры, а две переменные «emp1» и «emp2» создаются из типа «employee». За закрывающей скобкой должна следовать точка с запятой (;).

К членам структуры могут обращаться два типа операторов:

  1. Оператор-член
  2. Оператор указателя структуры

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

Это специальный тип данных, используемый в C, который позволяет пользователю хранить типы данных различного вида в одной и той же ячейке памяти. Союз очень похож на структуру, и его можно определить, заменив ключевое слово «struct» ключевым словом «union». Члены накладывают память друг на друга в союзе и достаточно велики, чтобы соответствовать всем ее членам.

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

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

профсоюзный работник {

char name [32];

int age;

плавающая зарплата;

};

Здесь ключевое слово «union» определяет объединение, которое очень похоже на объявление структуры. Переменная может либо хранить строковое значение, которое является «именем сотрудника», целочисленным значением, которое представляет собой «возраст сотрудника», так и поплавок, который представляет собой «заработную плату работника».

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

1. Ключевое слово

Ключевое слово «struct» используется для определения структуры, тогда как ключевое слово «union» используется для определения объединения.

2. Распределение памяти

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

3. Доступ пользователей

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

4. Размер

Размер структуры равен сумме размеров всех членов или больше, тогда как размер объединения равен размеру самого большого члена размера.

5. Инициализация

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

5. Значение

Структура может хранить разные значения всех членов, а изменение значения одного члена не будет влиять на значения других членов. В то время как объединение сохраняет одно и то же значение для всех своих членов, а изменение значения одного члена влияет на значение другого.

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

Состав союз
Ключевое слово Struct используется для определения структуры. Union используется для определения объединения.
Члены не разделяют память в структуре. Члены разделяют пространство памяти в объединении.
Любой член может быть получен в любое время в структуре. Доступ к одному члену можно получить одновременно в союзе.
Несколько элементов структуры могут быть инициализированы сразу. Можно инициализировать только первый элемент.
Размер структуры равен сумме размеров каждого элемента. Размер объединения равен размеру самого большого члена.
Изменение значения одного элемента не повлияет на значение другого. Изменение значения одного члена повлияет на другие значения участника.
Сохраняет различные значения для всех участников. Сохраняет одинаковое значение для всех участников.

Резюме

  • Как структура, так и объединение являются определяемыми пользователем типами данных в C, которые функционально и концептуально одинаковы, но по-разному отличаются друг от друга.
  • Оба содержат переменные разных типов данных, но они используют один и тот же синтаксис для объявления переменных и доступа к членам. Хотя структура определяется ключевым словом «struct», объединение определяется ключевым словом «union».
  • Каждый член получает отдельную ячейку памяти в структуре, тогда как в объединении общее пространство памяти эквивалентно наибольшему члену размера. Все члены разделяют одно и то же пространство памяти в объединении.
  • Любой член в любой последовательности может быть доступен в структуре, тогда как в объединении доступна только эта переменная, значение которой недавно сохраняется.