Ключевая разница - структура и объединение в C
Массив - это структура данных, поддерживаемая языком C. Массив может использоваться для хранения элементов данных одного типа. Если есть оператор как int отмечает [10]; тогда метки представляют собой массив, в котором может храниться десять меток, и все они являются целыми числами. Иногда требуется хранить элементы данных разных типов в одной и той же ячейке памяти. Например, сотрудник может иметь идентификатор сотрудника, имя, отдел, возраст и т. д. Они имеют разные типы данных. Следовательно, необходимо иметь метод для хранения различных элементов данных как единое целое. Структуры и объединения в C используются для хранения элементов данных разных типов в одной и той же ячейке памяти. Структура и объединение похожи, но в основном различаются распределением памяти. Память, необходимая для хранения структурной переменной, представляет собой сумму объема памяти всех членов. Память, необходимая для хранения переменной объединения, - это память, необходимая для самого большого элемента в объединении. В этом ключевое различие между структурой и объединением в C. В этой статье обсуждается различие между структурой и объединением в C.
Что такое структура в C?
Структура - это определяемый пользователем тип данных в C. Он помогает комбинировать элементы данных разных типов. Структура может представлять записи. Студент может иметь student_id, student_name и т. д. Вместо того, чтобы хранить каждую переменную отдельно, все эти различные элементы данных могут быть объединены в один блок с использованием структуры. Он определяется с помощью ключевого слова «структура». В структуре ко всем ее элементам можно получить доступ в любое время. Следующее создает структуру производного типа данных Student.
struct Student {
intstudent_id;
char student_name[20];
};
Для приведенной выше структуры переменные могут быть объявлены следующим образом.
struct Студент student1, student2, student3;
Есть два метода доступа к членам структуры. То есть с помощью оператора члена (.) и оператора указателя структуры (->). Доступ к элементам можно получить, используя имя_переменной_структуры. имя члена. Если программист хочет получить доступ к имени студента 2, он может написать оператор как printf(student2.student_namename);
См. приведенную ниже программу со структурой.
Рисунок 01: Программа на C со структурами
Согласно приведенной выше программе, Студент является структурой. Он содержит student_id и student_name. В основной программе объявлены две переменные структурного типа. Они называются студент1 и студент2. Идентификатору student1 присваивается значение 1 с использованием оператора члена как student1.student_id=1. Имя «Энн» представляет собой строку. Поэтому он копируется в элемент student_name с помощью функции копирования строки strcpy. Идентификатор и имя назначаются student2 аналогичным образом. Наконец, эти значения выводятся с помощью оператора-члена.
Объем памяти, необходимый для хранения структурной переменной, равен сумме объема памяти всех членов. Student_id содержит 4 байта, а student_name содержит 20 байтов (по одному байту на символ). Всего 24 байта - это сумма объема памяти, необходимого для структуры.
Что такое Union в C?
Объединение - это определяемый пользователем тип данных в C. Он помогает хранить разные типы данных в одной и той же ячейке памяти. Книга может иметь такие свойства, как имя_книги, цена и т. д. Вместо создания переменных для каждой из них можно использовать объединение для объединения всех различных типов данных в один блок с помощью объединения. Он определяется с помощью ключевого слова «объединение». Следующее создает производное объединение данных Book.
unionBook{
имя символа[20];
двойная цена;
};
Для приведенного выше объединения переменные могут быть объявлены следующим образом.
union Book book1, book2;
Есть два способа доступа к членам союза. То есть с помощью оператора члена (.) и оператора указателя структуры (->). Доступ к членам можно получить с помощью union_variable_name. имя члена. Если программист хочет получить доступ к имени книги1, он может написать оператор как printf(book1.name);
Ссылайтесь на приведенную ниже программу с объединением.
Рисунок 02: Программа на C, использующая union
Согласно вышеизложенной программе, Книга есть союз. book1 - это переменная типа union. Имя и цена имеют присвоенные значения. В объединении одновременно можно получить доступ только к одному из его членов, а все остальные члены будут иметь мусорные значения. Значение id печатается неправильно, но значение цены печатается правильно.
Рисунок 03: Модифицированная программа на C с объединением
Согласно приведенной выше программе, Книга является союзом. book1 и book2 являются переменными типа union. Сначала присваивается значение для имени book1, и оно печатается. Затем присваивается значение для имени book2, и оно печатается. Все элементы печатаются правильно, поскольку одновременно используется один элемент. Память, необходимая для хранения объединения, - это память, необходимая для самого большого элемента объединения. В приведенной выше программе переменная имени имеет размер 20 байт. Это больше, чем цена. Итак, выделение памяти для объединения составляет 20 байт.
Каковы сходства между структурой и объединением в C?
- И Structure, и Union в C являются типами данных, определяемыми пользователем.
- И Structure, и Union в C могут использоваться для хранения разных типов данных в одной и той же ячейке памяти.
В чем разница между структурой и объединением в C?
Структура и союз в C |
|
Structure - это определяемый пользователем тип данных на языке C, который позволяет объединять данные разных типов вместе. | Union - определяемый пользователем тип данных на языке C, который позволяет объединять данные разных типов вместе. |
Доступность | |
В структуре все ее члены могут быть доступны в любое время. | В объединении одновременно может быть доступен только один из его членов, а все остальные члены будут содержать мусорные значения. |
Выделение памяти | |
Память, необходимая для хранения структурной переменной, представляет собой сумму объема памяти всех членов. | Память, необходимая для хранения переменной объединения, - это память, необходимая для самого большого элемента в объединении. |
Ключевое слово | |
Ключевое слово, используемое для определения структуры, - «struct». | Ключевым словом, используемым для определения союза, является «союз». |
Резюме – Структура и объединение в C
Массив используется для хранения элементов данных одного типа. Иногда необходимо хранить элементы данных разных типов в одной и той же ячейке памяти. Язык программирования C предоставляет структуру и объединение для выполнения этой задачи. Оба типа данных определяются пользователем. Память, необходимая для хранения структурной переменной, представляет собой сумму объема памяти всех членов. Память, необходимая для хранения переменной объединения, - это память, необходимая для самого большого элемента в объединении. В этом разница между структурой и объединением в C.