Різниця між структурою та союзом у C
Що таке структура?
Структура — це визначений користувачем тип даних мовою програмування C, який об’єднує логічно пов’язані елементи даних різних типів.
Усі елементи структури зберігаються в безперервних місцях пам’яті. Змінна типу структури може зберігати більше одного елемента даних різних типів під одним іменем.
Що таке Союз
Об’єднання — це визначений користувачем тип даних, як і структура. Об'єднання об'єднує об'єкти різних типів і розмірів. Змінна об’єднання виділяє простір пам’яті, рівний простору для зберігання найбільшої змінної об’єднання. Це дозволяє об’єктам різних типів спільно використовувати те саме розташування.
Синтаксис оголошення структури
struct [name of the structure] { type member1; type member2; type member3; };
Структура оголошується за допомогою ключового слова “struct” і назви структури. Номер 1, номер 2, номер 3 є окремими членами структури. Частина тіла закінчується крапкою з комою (;).
Приклад структури в програмуванні на C
#include <stdio.h> struct student { char name[60]; int roll_no; float marks; } sdt; int main() { printf("Enter the following information:\n"); printf("Enter student name: "); fgets(sdt.name, sizeof(sdt.name), stdin); printf("Enter student roll number: "); scanf("%d", & sdt. roll_no); printf("Enter students marks: "); scanf("%f", & sdt.marks); printf("The information you have entered is: \n"); printf("Student name: "); printf("%s", sdt.name); printf("Student roll number: %d\n", sdt. roll_no); printf("Student marks: %.1f\n", sdt.marks); return 0; }
У наведеній вище програмі створюється структура під назвою студент. Ця структура містить три елементи даних: 1) name (рядок), 2) roll_no (ціле число) і 3) позначки (float).
Після цього створюється структурна змінна sdt для зберігання інформації про студента та відображення її на екрані комп’ютера.
вихід:
Введіть таку інформацію:
Введіть ім'я студента: Джеймс
Введіть номер списку студентів: 21
Введіть оцінки студентів: 67
Інформація, яку ви ввели:
Ім'я учня: Джон
Номер списку учнів: 21
Оцінка студентів: 67.0
Синтаксис оголошення об'єднання
union [name of union] { type member1; type member2; type member3; };
Об’єднання оголошується за допомогою ключового слова «об’єднання» та назви об’єднання. Номер 1, номер 2, номер 3 є окремими членами спілки. Частина тіла закінчується крапкою з комою (;).
Приклад об'єднання в програмуванні на C
#include <stdio.h> union item { int x; float y; char ch; }; int main( ) { union item it; it.x = 12; it.y = 20.2; it.ch = 'a'; printf("%d\n", it.x); printf("%f\n", it.y); printf("%c\n", it.ch); return 0; }
вихід:
1101109601
20.199892
a
У наведеній вище програмі ви можете побачити, що значення x і y були пошкоджені. Лише змінна ch друкує очікуваний результат. Це тому, що в об’єднанні розташування пам’яті спільно використовується для всіх типів даних-членів.
Таким чином, єдиний елемент даних, значення якого зараз зберігається, займатиме простір пам’яті. Значення змінної ch було збережено нарешті, тому значення решти змінні втрачено.
Структура Vs. Союз
Ось важлива відмінність між структурою та союзом:
Структура | Union |
---|---|
Для визначення структури можна використовувати ключове слово struct. | Для визначення об’єднання можна використовувати ключове слово union. |
Кожному члену всередині структури призначається унікальне місце в пам’яті. | В об’єднанні розташування пам’яті спільно використовується всіма членами даних. |
Зміна значення одного елемента даних не вплине на інші члени даних у структурі. | Зміна значення одного елемента даних призведе до зміни значення інших елементів даних в об’єднанні. |
Це дозволяє ініціалізувати кілька учасників одночасно. | Це дозволяє ініціалізувати лише першого члена об’єднання. |
Загальний розмір структури є сумою розмірів кожного елемента даних. | Загальний розмір об’єднання – це розмір найбільшого елемента даних. |
В основному використовується для зберігання різних типів даних. | Він в основному використовується для зберігання одного з багатьох доступних типів даних. |
Він займає місце для кожного члена, записаного у внутрішніх параметрах. | Він займає місце для члена, який має найбільший розмір, записаний у внутрішніх параметрах. |
Ви можете отримати будь-якого учасника одночасно. | Ви можете отримати доступ до одного члена за раз у спілці. |
Він підтримує гнучкий масив. | Він не підтримує гнучкий масив. |
Переваги структури
Ось плюси/переваги використання структури:
- Структури збирають більше однієї частини даних про той самий предмет разом в одному місці.
- Це корисно, коли ви хочете зібрати дані подібних типів даних і параметрів, як-от ім’я, прізвище тощо.
- Його дуже легко підтримувати, оскільки ми можемо представити весь запис за допомогою одного імені.
- У структурі ми можемо передати повний набір записів будь-якій функції за допомогою одного параметра.
- Ви можете використовувати масив структур, щоб зберігати більше записів подібних типів.
Переваги союзу
Ось плюси/переваги використання union:
- Він займає менше пам’яті порівняно зі структурою.
- Коли ви використовуєте об’єднання, лише до останньої змінної можна отримати прямий доступ.
- Об’єднання використовується, коли необхідно використовувати одне й те саме місце пам’яті для двох або більше елементів даних.
- Це дозволяє зберігати дані лише одного елемента даних.
- Його виділений простір дорівнює максимальному розміру елемента даних.
Недоліки конструкції
Ось мінуси/недоліки використання структури:
- Якщо складність ІТ-проекту виходить за межі, ним стає важко керувати.
- Зміна однієї структури даних у коді вимагає змін у багатьох інших місцях. Тому зміни стає важко відстежити.
- Структура є повільнішою, оскільки вона потребує місця для зберігання всіх даних.
- Ви можете отримати будь-якого члена за раз у структурі, тоді як ви можете отримати доступ до одного члена за раз у об’єднанні.
- Структура займає місце для кожного члена, записаного у внутрішніх параметрах, тоді як об’єднання займає місце для члена, який має найбільший розмір, записаний у внутрішніх параметрах.
- Структура підтримує гнучкий масив. Union не підтримує гнучкий масив.
Недоліки союзу
Ось мінуси/недоліки використання union:
- Одночасно можна використовувати лише одного члена спілки.
- Усі змінні об’єднання не можна ініціалізувати або використовувати з різними значеннями одночасно.
- Союз виділяє одне загальне місце зберігання для всіх своїх членів.
КЛЮЧОВІ ВІДМІННОСТІ:
- Кожному члену в структурі призначається унікальне місце пам’яті, тоді як в об’єднанні місце пам’яті спільно використовується всіма членами даних.
- Зміна значення одного елемента даних не вплине на інші елементи даних у структурі, тоді як зміна значення одного елемента даних змінить значення інших елементів даних в об’єднанні.
- Структура в основному використовується для зберігання різних типів даних, тоді як об’єднання в основному використовується для зберігання одного з багатьох типів даних.
- У структурі ви можете отримувати будь-якого члена за раз, з іншого боку в об’єднанні ви можете отримати доступ до одного члена за раз.
- Структура підтримує гнучкий масив, тоді як об’єднання не підтримує гнучкий масив.
Також перегляньте наш підручник C для початківців:- Натисніть тут