Що таке структура?
Структура - це визначений користувачем тип даних мовою програмування С, який поєднує в собі логічно пов'язані елементи даних різних типів даних разом.
Всі елементи структури зберігаються у суміжних місцях пам'яті. Змінна типу структури може зберігати більше одного елемента даних різних типів даних під одним іменем.
У цьому підручнику ви дізнаєтесь:
- Що таке структура?
- Що таке Союз
- Синтаксис структури оголошення
- Приклад структури в програмуванні на Сі
- Синтаксис Декларування Союзу
- Приклад програмування Union in C
- Структура проти Союз
- Переваги будови
- Переваги союзу
- Недоліки структури
- Недоліки союзу
Що таке Союз
Union - це визначений користувачем тип даних, як і структура. Union об'єднує об'єкти різних типів і розмірів разом. Змінна об'єднання виділяє простір пам'яті, рівний простору для зберігання найбільшої змінної об'єднання. Це дозволяє об'єктам різних типів спільно використовувати одне і те ж місце.
Синтаксис структури оголошення
struct [name of the structure]{type member1;type member2;type member3;};
Структура оголошується за допомогою ключового слова "struct" та назви структури. Номер 1, номер 2, номер 3 - це окремі члени структури. Частина тіла закінчується крапкою з комою (;).
Приклад структури в програмуванні на Сі
#includestruct 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) ім'я (рядок), 2) roll_no (ціле число) та 3) позначки (плаваюча).
Після цього створюється структурна змінна sdt для зберігання інформації про студента та відображення її на екрані комп'ютера.
Вихід:
Введіть таку інформацію:
Введіть ім'я студента: Джеймс
Введіть номер студентського списку: 21
Введіть оцінки студентів: 67
Введена інформація:
Ім'я студента: Джон
Номер студентського списку: 21
Оцінки студентів: 67,0
Синтаксис Декларування Союзу
union [name of union]{type member1;type member2;type member3;};
Union оголошується за допомогою ключового слова "union" та назви union. Номер 1, номер 2, номер 3 є окремими членами профспілки. Частина тіла закінчується крапкою з комою (;).
Приклад програмування Union in C
#includeunion 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 нарешті було збережено, тому значення решти змінних втрачено.
Структура проти Союз
Ось важлива різниця між структурою та об’єднанням:
Структура | Союз |
Ви можете використовувати ключове слово struct для визначення структури. | Ви можете використовувати ключове слово union для визначення об'єднання. |
Кожному члену в структурі присвоюється унікальне місце в пам'яті. | У поєднанні розташування пам'яті спільно використовується усіма учасниками даних. |
Зміна значення одного члена даних не вплине на інші члени даних у структурі. | Зміна значення одного члена даних змінить значення інших членів даних в об'єднанні. |
Це дозволяє ініціалізувати кілька членів одночасно. | Це дозволяє ініціалізувати лише першого члена спілки. |
Загальний розмір структури - це сума розміру кожного члена даних. | Загальний розмір об'єднання - це розмір найбільшого члена даних. |
В основному він використовується для зберігання різних типів даних. | В основному він використовується для зберігання одного з багатьох доступних типів даних. |
Він займає місце для кожного члена, записаного у внутрішніх параметрах. | Він займає місце для члена, що має найбільший розмір, записаний у внутрішніх параметрах. |
Ви можете одночасно отримати будь-якого учасника. | Ви можете отримати доступ до одного члена спілки за раз. |
Він підтримує гнучкий масив. | Він не підтримує гнучкий масив. |
Переваги будови
Ось плюси / переваги використання структури:
- Структури збирають більше, ніж один фрагмент даних про одну і ту ж тему, в одному місці.
- Це корисно, коли ви хочете зібрати дані подібних типів даних та параметрів, таких як ім’я, прізвище тощо.
- Це дуже легко підтримувати, оскільки ми можемо представити весь запис, використовуючи одне ім’я.
- За структурою ми можемо передавати повний набір записів будь-якій функції за допомогою одного параметра.
- Ви можете використовувати масив структури, щоб зберігати більше записів подібних типів.
Переваги союзу
Ось плюси / переваги використання об’єднання:
- Він займає менше пам'яті порівняно зі структурою.
- Коли ви використовуєте об'єднання, безпосередньо можна отримати доступ лише до останньої змінної.
- Union використовується, коли вам потрібно використовувати одне і те ж місце в пам'яті для двох або більше членів даних.
- Це дозволяє зберігати дані лише одного члена даних.
- Його виділений простір дорівнює максимальному розміру члена даних.
Недоліки структури
Ось мінуси / недоліки використання структури:
- Якщо складність ІТ-проекту виходить за межі, керувати ним стає важко.
- Зміна однієї структури даних у коді вимагає змін у багатьох інших місцях. Тому зміни стає важко відстежувати.
- Структура є повільнішою, оскільки вимагає місця для зберігання всіх даних.
- Ви можете отримати будь-якого члена за раз у структурі, тоді як ви можете отримати доступ до одного члена в об’єднанні.
- Структура займає простір для кожного члена, записаного у внутрішніх параметрах, тоді як об'єднання займає простір для члена, що має найбільший розмір, записаний у внутрішніх параметрах.
- Структура підтримує гнучкий масив. Union не підтримує гнучкий масив.
Недоліки союзу
Ось мінуси / недоліки використання об’єднання:
- Одночасно можна використовувати лише одного члена профспілки.
- Усі змінні об'єднання не можуть бути ініціалізовані або використані з різними значеннями одночасно.
- Союз виділяє один загальний простір для всіх своїх членів.
ОСНОВНІ ВІДМІННОСТІ:
- Кожному члену в структурі присвоюється унікальне розташування пам'яті, тоді як в об'єднанні місце пам'яті спільне для всіх членів даних.
- Зміна значення одного члена даних не вплине на інші члени даних у структурі, тоді як зміна значення одного члена даних змінить значення інших членів даних у об'єднанні.
- Структура в основному використовується для зберігання різних типів даних, тоді як об'єднання в основному використовується для зберігання одного з багатьох типів даних.
- У структурі ви можете отримати будь-якого члена за раз, з іншого боку, в об'єднанні, ви можете отримати доступ до одного члена за раз.
- Структура підтримує гнучкий масив, тоді як об'єднання не підтримує гнучкий масив.