Klíčový rozdíl – struktura versus unie v C
Pole je strukturovaná data podporovaná jazykem C. Pole lze použít k uložení datových prvků stejného typu. Pokud existuje příkaz jako značky int [10]; pak značky jsou pole, které může uložit deset značek a všechny jsou celá čísla. Někdy je potřeba ukládat datové prvky různých typů do stejného paměťového místa. Zaměstnanec může mít například ID zaměstnance, jméno, oddělení, věk atd. Jsou různých datových typů. Proto je nutné mít způsob, jak uložit různé datové prvky jako jednu jednotku. Struktury a svazky v C se používají pro ukládání datových prvků různých typů do stejného paměťového místa. Struktura a sjednocení jsou podobné, ale liší se hlavně kvůli alokaci paměti. Paměť potřebná k uložení proměnné struktury je součtem velikosti paměti všech členů. Paměť potřebná k uložení sjednocovací proměnné je paměť potřebná pro největší prvek ve sjednocení. To je klíčový rozdíl mezi strukturou a sjednocením v C. Tento článek pojednává o rozdílu mezi strukturou a sjednocením v C.
Co je struktura v C?
Struktura je uživatelsky definovaný datový typ v C. Pomáhá kombinovat datové položky různých typů. Struktura může představovat záznamy. Student může mít student_id, student_name atd. Spíše než ukládat každou proměnnou samostatně, mohou být všechny tyto různé datové položky stlačeny do jediné jednotky pomocí struktury. Definuje se pomocí klíčového slova ‚struct‘. Ve struktuře lze kdykoli přistupovat ke všem jejím členům. Následující text vytvoří odvozenou strukturu datového typu Student.
struct Student {
intstudent_id;
char student_name[20];
};
U výše uvedené struktury lze proměnné deklarovat následovně.
struct Student student1, student2, student3;
Existují dva způsoby přístupu k členům struktury. To je pomocí operátoru člena (.) a operátoru ukazatele struktury (->). Ke členům lze přistupovat pomocí název_proměnné struktury. jméno člena. Pokud chce programátor získat přístup ke jménu studenta 2, může příkaz napsat jako printf(student2.jméno_studenta);
Odkaz na níže uvedený program se strukturou.
Obrázek 01: Program C se strukturami
Podle výše uvedeného programu je Student strukturou. Obsahuje student_id a student_name. V hlavním programu jsou deklarovány dvě proměnné typu struktura. Nazývají se student1 a student2. ID studenta1 je přiřazeno s hodnotou 1 pomocí operátoru člena jako student1.student_id=1. Jméno „Ann“je řetězec. Proto je zkopírován do člena student_name pomocí funkce kopírování řetězce strcpy. ID a jméno jsou přiřazeny student2 podobným způsobem. Nakonec se tyto hodnoty vytisknou pomocí členského operátoru.
Množství paměti potřebné k uložení proměnné struktury je součtem velikosti paměti všech členů. Student_id obsahuje 4 bajty a student_name obsahuje 20 bajtů (každý jeden bajt pro znak). Celkových 24 bajtů je součet velikosti paměti požadované strukturou.
Co je unie v C?
Sjednocení je uživatelsky definovaný datový typ v C. Pomáhá ukládat různé typy dat do stejného paměťového místa. Kniha může mít vlastnosti jako book_name, price atd. Namísto vytváření proměnných pro každou z nich lze sjednocení použít ke komprimaci všech různých datových typů do jedné jednotky pomocí sjednocení. Je definována pomocí klíčového slova ‚sjednocení‘. Následující text vytvoří odvozenou knihu sjednocení dat.
unionBook{
název znaku[20];
dvojitá cena;
};
Pro výše uvedené sjednocení lze proměnné deklarovat následovně.
unijní kniha kniha1, kniha2;
Existují dva způsoby přístupu k členům odboru. To je pomocí operátoru člena (.) a operátoru ukazatele struktury (->). Členové jsou přístupní pomocí union_variable_name. jméno člena. Pokud chce programátor získat přístup ke jménu knihy1, může příkaz napsat jako printf(název knihy);
Odkaz na níže uvedený program s odborem.
Obrázek 02: Program C využívající sjednocení
Podle výše uvedeného programu je Kniha spojením. Kniha1 je proměnná typu union. Název a cena jsou přiřazeny hodnoty. V unii může být současně přístupný pouze jeden z jejích členů a všichni ostatní členové budou mít nesmyslné hodnoty. Hodnota id se nevytiskne správně, ale hodnota ceny se vytiskne správně.
Obrázek 03: Upravený program C se sjednocením
Podle výše uvedeného programu je Book unie. Book1 a book2 jsou proměnné typu sjednocení. Nejprve je přiřazena hodnota názvu knihy1 a je vytištěna. Poté je přiřazena hodnota názvu knihy2 a je vytištěna. Všichni členové se vytisknou správně, protože je používán vždy jeden člen. Paměť potřebná k uložení sjednocení je paměť požadovaná pro největší prvek sjednocení. Ve výše uvedeném programu je proměnná názvu 20 bajtů. Je větší než cena. Takže alokace paměti pro sjednocení je 20 bajtů.
Jaké jsou podobnosti mezi strukturou a unií v C?
- Struktura i unie v jazyce C jsou datové typy definované uživatelem.
- Strukturu i Union v C lze použít k ukládání různých typů dat do stejného paměťového místa.
Jaký je rozdíl mezi strukturou a unií v C?
Struktura vs Union v C |
|
Structure je uživatelsky definovaný datový typ v jazyce C, který umožňuje kombinovat data různých typů dohromady. | Union je uživatelsky definovaný datový typ v jazyce C, který umožňuje kombinovat data různých typů dohromady. |
Dostupnost | |
Ve struktuře mohou být všichni její členové kdykoli přístupní. | V unii může být současně přístupný pouze jeden z jejích členů a všichni ostatní členové budou obsahovat nesmyslné hodnoty. |
Alokace paměti | |
Paměť potřebná k uložení proměnné struktury je součtem velikosti paměti všech členů. | Paměť potřebná k uložení sjednocující proměnné je paměť požadovaná pro největší prvek ve sjednocení. |
Klíčové slovo | |
Klíčové slovo použité k definování struktury je ‚struct‘. | Klíčové slovo používané k definování unie je „sjednocení“. |
Shrnutí – Struktura vs Union v C
Pole se používá k uložení datových prvků stejného typu. Někdy je nutné ukládat datové prvky různých typů do stejného paměťového místa. Programovací jazyk C poskytuje strukturu a sjednocení pro splnění tohoto úkolu. Oba jsou uživatelem definované datové typy. Paměť potřebná k uložení proměnné struktury je součtem velikosti paměti všech členů. Paměť potřebná k uložení sjednocovací proměnné je paměť potřebná pro největší prvek ve sjednocení. Toto je rozdíl mezi strukturou a sjednocením v C.