Pole je datová struktura podporovaná jazykem C. Pole lze použít k ukládání datových prvků stejného typu. Pokud existuje prohlášení jako int značky [10]; potom jsou značky maticí, do které lze uložit deset značek, a všechny jsou celá čísla. Někdy je nutné ukládat datové prvky různých typů do stejného paměťového umístění. Zaměstnanec může mít například ID zaměstnance, jméno, oddělení, věk atd. Jedná se o různé typy dat. Proto je nutné mít způsob ukládání různých datových prvků jako jedné jednotky. Struktury a odbory v C se používají pro ukládání datových prvků různých typů ve stejném umístění v paměti. Struktura a unie jsou podobné, ale hlavně se liší kvůli alokaci paměti. Paměť potřebná k uložení proměnné struktury je součet velikosti paměti všech členů. Paměť potřebná k uložení proměnné unie je paměť vyžadovaná pro největší prvek v unii. To je klíčový rozdíl mezi strukturou a jednotou v C. Tento článek pojednává o rozdílu mezi strukturou a jednotou v C.
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í bok po boku - struktura vs. unie v C v tabulkové formě
6. Shrnutí
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. Spíše než ukládání každé proměnné samostatně, všechny tyto různé datové položky mohou být kompaktní do jedné jednotky pomocí struktury. Definuje se pomocí klíčového slova 'struct'. Ve struktuře jsou přístupné všechny její členy kdykoli. Následující vytvoří odvozený datový typ struct Student.
struct Student
intstudent_id;
char student_name [20];
;
Pro výše uvedenou strukturu lze proměnné deklarovat následovně.
struct Student student1, student2, student3;
Pro přístup ke členům struktury existují dvě metody. To je pomocí člena operátor (.) A operátor ukazatele struktury (->). K členům lze přistupovat pomocí structure_variable_name. jméno člena. Pokud chce programátor přistupovat ke jménu studenta 2, může napsat příkaz 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. Říká se jim student1 a student2. ID student1 je přiřazeno hodnotě 1 pomocí člena operátor jako student1.student_id = 1. Název „Ann“ je řetězec. Proto je zkopírován do člena student_name pomocí funkce strcpy copy copy. ID a jméno jsou přiřazeny studentovi2 podobným způsobem. Nakonec jsou tyto hodnoty vytištěny pomocí členských operátorů.
Velikost 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). Celkem 24 bajtů je součet velikosti paměti požadované strukturou.
Spojení je uživatelem definovaný datový typ v C. Pomáhá ukládat různé datové typy ve stejném umístění v paměti. Kniha může mít vlastnosti, jako je název_ knihy, cena atd. Namísto vytváření proměnných pro každou z nich lze pomocí spojení spojit všechny různé typy dat do jedné jednotky. Definuje se pomocí klíčového slova 'union'. Následující vytvoří odvozenou knihu Union Union.
unionBook
znak char [20];
dvojitá cena;
;
Pro výše uvedené spojení mohou být proměnné deklarovány následovně.
kniha svazových knih1, kniha2;
Existují dva způsoby přístupu k členům unie. To je pomocí člena operátor (.) A operátor ukazatele struktury (->). K členům lze přistupovat pomocí union_variable_name. jméno člena. Pokud chce programátor přistupovat ke jménu book1, pak může napsat příkaz jako printf (book1.name);
Předveďte níže uvedený program se spojením.
Obrázek 02: C program pomocí spojení
Podle výše uvedeného programu je Kniha svazkem. Book1 je proměnná typu union. Název a cena jsou přiřazené hodnoty. V unii je přístupný současně pouze jednomu z jeho členů a všichni ostatní členové budou mít hodnoty odpadu. Hodnota id se netiskne správně, ale cena se vytiskne správně.
Obrázek 03: Modifikovaný program C se spojením
Podle výše uvedeného programu je Kniha svazkem. Book1 a book2 jsou proměnné typu unie. Nejprve je přiřazena hodnota pro název book1 a je vytištěna. Poté je přiřazena hodnota názvu book2 a je vytištěna. Všichni členové se tisknou správně, protože jeden člen je používán současně. Paměť potřebná k uložení svazku je paměť vyžadovaná pro největší prvek svazku. Ve výše uvedeném programu je proměnná názvu 20 bajtů. Je větší než cena. Takže přidělení paměti pro spojení je 20 bajtů.
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 jsou přístupné všichni její členové kdykoli. | V unii je přístupný pouze jeden z jejích členů najednou a všichni ostatní členové budou obsahovat hodnoty odpadu. |
Přidělení paměti | |
Paměť potřebná k uložení proměnné struktury je součet velikosti paměti všech členů. | Paměť potřebná k uložení proměnné unie je paměť vyžadovaná pro největší prvek v unii. |
Klíčové slovo | |
Klíčové slovo použité k definování struktury je 'struct'. | Klíčové slovo použité k definování unie je „unie“. |
Pole se používá k ukládání datových prvků stejného typu. Někdy je nutné ukládat datové prvky různých typů do stejného paměťového umístění. Programovací jazyk C poskytuje strukturu a jednotu pro splnění tohoto úkolu. Oba jsou uživatelem definované datové typy. Paměť potřebná k uložení proměnné struktury je součet velikosti paměti všech členů. Paměť potřebná k uložení proměnné unie je paměť vyžadovaná pro největší prvek v unii. To je rozdíl mezi strukturou a jednotou v C.
1.Point, Návody. „Structures in C.“, Tutorials Point, 15. 8. 2017. K dispozici zde
2.Point, Návody. "Odbory v C." , Výukové programy Point, 15. srpna 2017. K dispozici zde