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