Klíčový rozdíl - struktura vs. unie v C
Pole je strukturovaná data podporovaná jazykem C. Pole lze použít k ukládání datových prvků stejného typu. Pokud existuje prohlášení jako int mark [10]; potom jsou značky pole, do kterého lze uložit deset značek, a všechna jsou celá čísla. Někdy je nutné ukládat datové prvky různých typů na stejné místo v paměti. Zaměstnanec může mít například ID zaměstnance, jméno, oddělení, věk atd. Jedná se o různé datové typy. Proto je nutné mít metodu pro ukládání různých datových prvků jako jednu jednotku. Struktury a odbory v C se používají k ukládání datových prvků různých typů ve stejném umístění paměti. Struktura a sjednocení jsou podobné, ale hlavně se liší kvůli alokaci paměti. Paměť potřebná k uložení strukturní proměnné 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 v sjednocení. To je klíčový rozdíl mezi strukturou a unií v C. Tento článek pojednává o rozdílech mezi strukturou a unií v C.
OBSAH
1. Přehled a klíčový rozdíl
2. Co je struktura v C
3. Co je unie v C
4. Podobnosti mezi strukturou a unií v C
5. Srovnání vedle sebe - struktura vs. unie v C v tabulkové formě
6. Shrnutí
Co je struktura v C?
Struktura je uživatelem 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. Místo uložení každé proměnné samostatně lze všechny tyto různé datové položky zkompaktovat do jedné 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í vytvoří odvozený datový typ struktury Student.
Struct Student {
intstudent_id;
char student_name [20];
};
U výše uvedené struktury lze proměnné deklarovat následovně.
struktura Student student1, student2, student3;
Existují dvě metody přístupu ke členům struktury. To je pomocí operátoru člena (.) A operátoru ukazatele struktury (->). K členům lze přistupovat pomocí struktury_variabilní_název. jméno člena. Pokud chce programátor získat přístup ke jménu studenta 2, může příkaz napsat jako printf (student2.student_namename);
Viz 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 struktury. Nazývají se student1 a student2. ID studenta1 je přiřazeno hodnotě 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 studentovi2 přiřazeny podobným způsobem. Nakonec se tyto hodnoty vytisknou pomocí operátoru člena.
Množství paměti potřebné k uložení strukturní proměnné je součtem velikosti paměti všech členů. Identifikátor studenta obsahuje 4 bajty a student_name obsahuje 20 bajtů (po jednom bajtu pro znak). Celkem 24 bajtů je součet velikosti paměti požadované strukturou.
Co je unie v C?
Spojení je uživatelem definovaný datový typ v C. Pomáhá ukládat různé datové typy do stejného umístění v paměti. Kniha může mít vlastnosti, jako je book_name, cena atd. Místo vytváření proměnných pro každou z nich lze sjednocení použít ke kompilaci všech různých datových typů do jedné jednotky pomocí sjednocení. Je definován pomocí klíčového slova 'union'. Následující vytvoří odvozenou knihu sjednocení dat.
odborová kniha {
název znaku [20];
dvojnásobná cena;
};
U výše uvedeného sjednocení lze proměnné deklarovat následovně.
svazek Kniha kniha1, kniha2;
Existují dvě metody přístupu k členům unie. To je pomocí operátoru člena (.) A operátoru ukazatele struktury (->). K členům lze přistupovat pomocí union_variable_name. jméno člena. Pokud chce programátor získat přístup k názvu knihy1, může příkaz napsat jako printf (book1.name);
Viz níže uvedený program s odborem.
Obrázek 02: Program C využívající unii
Podle výše uvedeného programu je Kniha svazkem. Book1 je proměnná typu unie. Název a cena jsou přiřazené hodnoty. V unii lze přistupovat pouze k jednomu z jejích členů najednou a všichni ostatní členové budou mít hodnoty smetí. 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 svaz. Book1 a book2 jsou proměnné typu sjednocení. Nejprve se přiřadí hodnota názvu book1 a vytiskne se. Poté se přiřadí hodnota názvu book2 a vytiskne se. Všichni členové tisknou správně, protože jeden člen je používán najednou. Paměť potřebná k uložení spojení je paměť potřebná pro největší prvek spojení. Ve výše uvedeném programu je proměnná názvu 20 bajtů. Je větší než cena. Takže alokace paměti pro unii je 20 bajtů.
Jaké jsou podobnosti mezi strukturou a unií v jazyce C?
- Struktura i Union v C jsou uživatelem definované datové typy.
- Structure i Union in C can be used to store different data types in the same memory location.
Jaký je rozdíl mezi strukturou a unií v C?
Rozdílný článek uprostřed před tabulkou
Struktura vs Unie v C |
|
Struktura je uživatelem definovaný datový typ v jazyce C, který umožňuje kombinovat data různých typů dohromady. | Union je uživatelem definovaný datový typ v jazyce C, který umožňuje kombinovat data různých typů dohromady. |
Přístupnost | |
Ve struktuře lze kdykoli přistupovat ke všem jejím členům. | V unii lze přistupovat pouze k jednomu z jejích členů najednou a všichni ostatní členové budou obsahovat nesmyslné hodnoty. |
Přidělení paměti | |
Paměť potřebná k uložení strukturní proměnné 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 v sjednocení. |
Klíčové slovo | |
Klíčové slovo použité k definování struktury je 'struct'. | Klíčové slovo použité k definici unie je 'union'. |
Shrnutí - Struktura vs Unie v C
K uložení datových prvků stejného typu se používá pole. Někdy je nutné ukládat datové prvky různých typů na stejné místo v paměti. 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í strukturní proměnné 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 v sjednocení. To je rozdíl mezi strukturou a unií v C.