Массив - это структура данных, поддерживаемая языком Си. Массив может использоваться для хранения элементов данных того же типа. Если есть оператор в виде int marks [10]; тогда метки - это массив, который может хранить десять меток, и все они являются целыми числами. Иногда требуется хранить элементы данных разных типов в одной и той же ячейке памяти. Например, сотрудник может иметь идентификатор сотрудника, имя, отдел, возраст и т. Д. Они имеют разные типы данных. Следовательно, необходимо иметь способ для хранения различных элементов данных в виде единого блока. Структуры и объединения в C используются для хранения элементов данных разных типов в одной и той же ячейке памяти. Структура и объединение схожи, но в основном они различаются из-за выделения памяти. Память, необходимая для хранения структурной переменной, является суммой объема памяти всех членов. Память, необходимая для хранения переменной объединения, - это память, необходимая для самого большого элемента в объединении. То есть ключевое отличие между структурой и объединением в C. В этой статье обсуждается различие между структурой и объединением в C.
1. Обзор и основные отличия
2. Что такое структура в C
3. Что такое Союз в С
4. Сходство между структурой и объединением в С
5. Сравнение бок о бок - структура против объединения в C в табличной форме
6. Резюме
Структура является определяемым пользователем типом данных в 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 | |
Структура - это пользовательский тип данных на языке Си, который позволяет объединять данные разных типов вместе.. | Union - это пользовательский тип данных на языке C, который позволяет объединять данные разных типов вместе.. |
доступность | |
В структуре все члены могут быть доступны в любое время. | В объединении только один из его членов может быть доступен одновременно, и все остальные члены будут содержать значения мусора. |
Выделение памяти | |
Память, необходимая для хранения структурной переменной, является суммой объема памяти всех членов.. | Память, необходимая для хранения переменной объединения, - это память, необходимая для самого большого элемента в объединении. |
Ключевое слово | |
Ключевое слово, используемое для определения структуры, это «структура». | Ключевое слово, используемое для определения объединения, это «союз». |
Массив используется для хранения элементов данных того же типа. Иногда необходимо хранить элементы данных разных типов в одной и той же ячейке памяти. Язык программирования C обеспечивает структуру и объединение для выполнения этой задачи. Оба являются пользовательскими типами данных. Память, необходимая для хранения структурной переменной, является суммой объема памяти всех членов. Память, необходимая для хранения переменной объединения, - это память, необходимая для самого большого элемента в объединении. В этом разница между структурой и объединением в C.
1.Point, учебники. «Структуры в C.», пункт «Учебное пособие», 15 августа 2017 г. Доступно здесь
2.Point, учебники. «Союзы в Си» , Учебное пособие, 15 августа 2017 г. Доступно здесь