И структура, и объединение являются определяемыми пользователем типами данных в языке Си и концептуально одинаковы, однако они по-прежнему различаются в некоторых отношениях, например, в том, как память выделяется их членам. Они объявлены одинаково, но они функционируют по-разному. Они позволяют пользователю объединять разные типы данных под одним именем. Несмотря на то, что при объявлении структурных переменных для каждого элемента используется отдельное место в памяти, разные члены объединяющей переменной совместно используют одно и то же место в памяти. Давайте изучим разницу между структурой и объединением в деталях.
Структура - это просто еще один определенный пользователем тип данных в C, который позволяет пользователю объединять типы данных различных типов в один тип в блоке памяти. Структура может содержать как простые, так и сложные типы данных, связанные друг с другом, что в противном случае не имеет смысла. Каждый элемент в структуре получает свое собственное место в памяти, так что он может быть доступен и извлечен в любое время.
Структура используется, когда большое количество данных необходимо сгруппировать, например, каталог, в котором хранится информация о многих участниках, в книге или в адресной книге, в которой хранится вся информация об одном контакте - имя, адрес, номер контакта и т. Д. Адрес каждого члена будет в порядке возрастания, что означает, что память каждого члена будет начинаться с разных значений смещения. Изменение значения одного члена не повлияет на других участников..
Ключевое слово struct используется для определения структуры различных типов данных под одним именем. Например, если вы хотите создать базу данных сотрудников, вам нужно будет хранить имя сотрудника, его возраст, номер телефона и зарплату под одной сущностью. Это делается с помощью ключевого слова struct, которое затем сообщает компилятору, что структура была объявлена.
struct employee
имя строки;
струнный возраст;
струнный телефон;
строчная зарплата;
emp1, emp2;
Здесь «employee» - это имя структуры, а две переменные «emp1» и «emp2» создаются с типом «employee». За закрывающими скобками должна стоять точка с запятой (;).
Члены структуры могут быть доступны для двух типов операторов:
Это специальный тип данных, используемый в C, который позволяет пользователю хранить типы данных разных типов в одной и той же ячейке памяти. Объединение очень похоже на структуру, и его можно определить, заменив ключевое слово struct на ключевое слово union. Члены накладывают друг на друга память в союзе, и она достаточно велика, чтобы вместить всех ее членов..
Когда переменная связана с объединением, компилятор выделяет память, учитывая размер самой большой памяти, поэтому размер объединения равен размеру самого большого элемента данных. Объединение может быть определено со многими членами, но только один член содержит значение в любой данный момент времени.
Адрес одинаков для всех членов объединения, что означает, что каждый член начинается с одинакового значения смещения. И изменение значения одного члена повлияет на значения других членов. Объединение можно использовать, когда вы хотите сохранить что-либо, относящееся к одному из нескольких типов данных..
профсоюзный работник
имя персонажа [32];
в возрасте;
плавающая зарплата;
;
Здесь ключевое слово union определяет объединение, которое очень похоже на объявление структуры. Переменная может хранить строковое значение «имя сотрудника», целочисленное значение «возраст сотрудника» или число с плавающей запятой, представляющее «зарплату сотрудника»..
1. Ключевое слово
Ключевое слово «struct» используется для определения структуры, в то время как ключевое слово «union» используется для определения объединения.
2. Распределение памяти
Отдельное пространство памяти выделено для элементов в структуре, и элементы имеют разные адреса, которые не разделяют память. С другой стороны, объединение разделяет одно и то же пространство памяти для всех его членов, поэтому расположение общей памяти выделяется..
3. Доступ членов
Союз хранит одно значение за раз для всех своих членов, делая доступ только для одного члена за один раз. В то время как несколько значений могут быть сохранены в структуре, так что любое значение элемента может быть доступно и получено в любое время.
4. Размер
Размер структуры равен сумме размера всех членов или более, тогда как размер объединения равен размеру члена наибольшего размера.
5. Инициализация
В структуре несколько элементов могут быть инициализированы одновременно, тогда как в объединении только первый элемент может быть инициализирован со значением его типа..
5. Значение
Структура может хранить различные значения всех элементов, и изменение значения одного элемента не будет влиять на значения других элементов. В то время как объединение хранит одинаковое значение для всех своих членов, изменение одного члена повлияет на значение другого.
Структура | союз |
Ключевое слово Struct используется для определения структуры. | Ключевое слово Union используется для определения объединения. |
Члены не разделяют память в структуре. | Члены разделяют пространство памяти в объединении. |
Любой член может быть извлечен в любое время в структуре. | Только один член может быть доступен одновременно в профсоюзе.. |
Несколько членов структуры могут быть инициализированы одновременно. | Только первый член может быть инициализирован. |
Размер структуры равен сумме размеров каждого члена. | Размер объединения равен размеру наибольшего члена. |
Изменение значения одного члена не повлияет на значение другого. | Изменение стоимости одного члена повлияет на другие значения члена. |
Хранит разные значения для всех членов. | Хранит одинаковое значение для всех участников. |