Масив - це структуровані дані, підтримувані мовою C. Масив може використовуватися для зберігання елементів одного типу. Якщо є твердження як знаки int [10]; тоді знаки - це масив, який може зберігати десять знаків, і всі вони є цілими числами. Іноді потрібно зберігати елементи даних різних типів в одному і тому ж місці пам'яті. Наприклад, працівник може мати посвідчення працівника, ім’я, відділ, вік тощо. Вони мають різні типи даних. Тому необхідно мати метод зберігання різних елементів даних як єдиний блок. Структури та об'єднання в C використовуються для зберігання елементів даних різних типів в одному і тому ж місці пам'яті. Структура та об'єднання схожі, але вони в основному розрізняються за рахунок розподілу пам'яті. Пам'ять, необхідна для зберігання змінної структури, - це підсумок розміру пам'яті всіх членів. Пам'ять, необхідна для зберігання змінної об'єднання, - це пам'ять, необхідна для найбільшого елемента в об'єднанні. Тобто ключова різниця між структурою та об'єднанням у C. У цій статті йдеться про різницю між структурою та об'єднанням у C..
1. Огляд та ключові відмінності
2. Що таке структура в С
3. Що таке Союз у С
4. Подібність між структурою та союзом у С
5. Поплечне порівняння - Структура проти Союзу в С у табличній формі
6. Підсумок
Структура - це визначений користувачем тип даних у C. Він допомагає комбінувати елементи даних різних типів. Структура може представляти записи. Учень може мати student_id, ім'я студента тощо. Замість того, щоб зберігати кожну змінну окремо, всі ці різні елементи даних можуть бути об'єднані в єдиний блок, використовуючи структуру. Він визначається за допомогою ключового слова "struct". У структурі всі її учасники можуть отримати доступ у будь-який час. Далі створюється похідна структура даних Student.
Структура Студент
intstudent_id;
char student_name [20];
;
Для наведеної структури змінні можна оголосити наступним чином.
структура Студент студент1, студент2, студент3;
Існує два способи доступу до членів структури. Це за допомогою оператора-члена (.) Та структури оператора вказівника (->). Доступ до членів можна отримати, використовуючи структуру_файли_імен. ім'я члена Якщо програміст хоче отримати доступ до імені студента 2, він може записати заяву як printf (student2.student_namename);
Перегляньте програму нижче зі структурою.
Рисунок 01: Програма С зі структурами
Відповідно до вищезгаданої програми, Студент - це структура. Він містить студент_id та ім’я студента. У головній програмі оголошено дві змінні типу структури. Їх називають student1 та student2. Ідентифікатору student1 присвоюється значення 1, використовуючи оператор-член як student1.student_id = 1. Назва "Енн" - це рядок. Отже, він копіюється на члена студента_імен за допомогою функції копіювання рядка strcpy. Ідентифікатор та ім’я присвоюються student2 аналогічним чином. Нарешті, ці значення друкуються за допомогою оператора-члена.
Обсяг пам'яті, необхідний для зберігання змінної структури, - це сума розміру пам'яті всіх членів. Student_id містить 4 байти, а ім'я студента - 20 байт (один байт кожного символу). Всього 24 байти - це сума обсягу пам'яті, необхідна структурі.
Союз - це визначений користувачем тип даних у C. Він допомагає зберігати різні типи даних в одному і тому ж місці пам'яті. Книга може мати властивості, такі як ім'я книги, ціна тощо. Замість створення змінних для кожного з них об'єднання може використовуватися для компактного використання всіх різних типів даних в одне ціле за допомогою об'єднання. Він визначається за допомогою ключового слова 'union'. Далі створюється похідна книга об'єднання даних.
unionBook
назва char [20];
подвійна ціна;
;
Для вищезгаданого об'єднання змінні можна оголосити наступним чином.
спілка Книга книга1, книга2;
Існує два способи доступу до членів спілки. Це за допомогою оператора-члена (.) Та структури оператора вказівника (->). Доступ до членів можна отримати за допомогою імені union_variable_name. ім'я члена Якщо програміст хоче отримати доступ до імені книги1, тоді він може написати заяву як printf (book1.name);
Зверніться до програми нижче із об'єднанням.
Малюнок 02: Програма С за допомогою об'єднання
Відповідно до вищезгаданої програми, Книга - це союз. Book1 - це змінна тип об'єднання. Назва та ціна присвоюються значенням. Одночасно, тільки один з її членів може отримати доступ одночасно, і всі інші члени матимуть значення сміття. Значення id не друкується належним чином, але ціна друкується належним чином.
Малюнок 03: Модифікована програма C з об'єднанням
Відповідно до вищезгаданої програми, Книга - це союз. Book1 і book2 є змінними типу об'єднання. Спочатку присвоюється значення імені book1 і воно друкується. Потім присвоюється значення для імені book2 і воно друкується. Усі члени друкуються правильно, оскільки одночасно використовується один член. Пам'ять, необхідна для зберігання об'єднання, - це пам'ять, необхідна для найбільшого елемента об'єднання. У вищевказаній програмі змінна імені становить 20 байт. Він більший, ніж ціна. Отже, розподіл пам'яті для об'єднання становить 20 байт.
Структура проти Союзу в С | |
Структура - це визначений користувачем тип даних мовою C, який дозволяє поєднувати дані різних типів разом. | Union - це визначений користувачем тип даних мовою C, який дозволяє поєднувати дані різних типів разом. |
Доступність | |
У структурі всі її учасники можуть отримати доступ у будь-який час. | У спілці одночасно може бути доступний лише один з його членів, а всі інші члени містять значення сміття. |
Виділення пам'яті | |
Пам'ять, необхідна для зберігання змінної структури, - це підсумок розміру пам'яті всіх членів. | Пам'ять, необхідна для зберігання змінної об'єднання, - це пам'ять, необхідна для найбільшого елемента в об'єднанні. |
Ключове слово | |
Ключове слово, яке використовується для визначення структури, - "структура". | Ключове слово, яке використовується для визначення союзу, - «союз». |
Масив використовується для зберігання елементів одного типу. Іноді доводиться зберігати елементи даних різних типів в одному місці пам'яті. Мова програмування на C забезпечує структуру та об'єднання для виконання цього завдання. Обидва - це визначені користувачем типи даних. Пам'ять, необхідна для зберігання змінної структури, - це підсумок розміру пам'яті всіх членів. Пам'ять, необхідна для зберігання змінної об'єднання, - це пам'ять, необхідна для найбільшого елемента в об'єднанні. Це різниця між структурою та об'єднанням у С.
1.Будинка, Підручники. “Структури в C.”, Підручники, 15 серпня 2017. Доступно тут
2. Пункт, Підручники. "Союзи в C." , Підручники Точка, 15 серпня 2017. Доступно тут