Kľúčový rozdiel – štruktúra verzus únia v jazyku C
Pole je štruktúrované údaje podporované jazykom C. Na uloženie dátových prvkov rovnakého typu možno použiť pole. Ak existuje príkaz ako značky int [10]; potom značky sú pole, ktoré môže uložiť desať značiek a všetky sú celé čísla. Niekedy je potrebné ukladať dátové prvky rôznych typov do rovnakého pamäťového miesta. Zamestnanec môže mať napríklad ID zamestnanca, meno, oddelenie, vek atď. Sú rôznych typov údajov. Preto je potrebné mať spôsob ukladania rôznych dátových prvkov ako jednej jednotky. Štruktúry a zväzky v C sa používajú na ukladanie dátových prvkov rôznych typov v rovnakom pamäťovom mieste. Štruktúra a spojenie sú podobné, ale odlišujú sa hlavne kvôli prideleniu pamäte. Pamäť potrebná na uloženie štruktúrnej premennej je súčtom veľkosti pamäte všetkých členov. Pamäť potrebná na uloženie premennej zjednotenia je pamäť potrebná pre najväčší prvok v zjednotení. To je kľúčový rozdiel medzi štruktúrou a zjednotením v jazyku C. Tento článok pojednáva o rozdiele medzi štruktúrou a zjednotením v jazyku C.
Čo je štruktúra v jazyku C?
Štruktúra je užívateľsky definovaný dátový typ v C. Pomáha kombinovať dátové položky rôznych typov. Štruktúra môže reprezentovať záznamy. Študent môže mať študent_id, študent_meno atď. Namiesto ukladania každej premennej samostatne, všetky tieto rôzne dátové položky môžu byť kompaktné do jednej jednotky pomocou štruktúry. Definuje sa pomocou kľúčového slova „struct“. V štruktúre je možné kedykoľvek pristupovať ku všetkým jej členom. Nasledujúce vytvorí odvodenú štruktúru dátového typu Student.
struct Študent {
intstudent_id;
char student_name[20];
};
Pre vyššie uvedenú štruktúru môžu byť premenné deklarované nasledovne.
struct Študent študent1, študent2, študent3;
Sú dva spôsoby prístupu k členom štruktúry. To je pomocou operátora člena (.) a operátora ukazovateľa štruktúry (->). K členom je možné pristupovať pomocou názov_premennej štruktúry. meno člena. Ak chce programátor získať prístup k menu študenta 2, potom môže napísať príkaz ako printf(student2.meno_studenta);
Pozri nižšie uvedený program so štruktúrou.
Obrázok 01: Program C so štruktúrami
Podľa vyššie uvedeného programu je študent štruktúrou. Obsahuje student_id a student_name. V hlavnom programe sú deklarované dve premenné typu štruktúry. Nazývajú sa študent1 a študent2. ID študenta1 sa priradí hodnota 1 pomocou operátora člena ako student1.student_id=1. Meno „Ann“je reťazec. Preto sa skopíruje do člena študent_meno pomocou funkcie kopírovania reťazca strcpy. ID a meno sú priradené študentovi2 podobným spôsobom. Nakoniec sa tieto hodnoty vytlačia pomocou členského operátora.
Množstvo pamäte potrebné na uloženie štruktúrnej premennej je súčtom veľkosti pamäte všetkých členov. Student_id obsahuje 4 bajty a student_name obsahuje 20 bajtov (každý jeden bajt pre znak). Celkových 24 bajtov je súčet veľkosti pamäte požadovanej štruktúrou.
Čo je únia v jazyku C?
Zjednotenie je používateľom definovaný typ údajov v jazyku C. Pomáha ukladať rôzne typy údajov na rovnaké miesto v pamäti. Kniha môže mať vlastnosti ako book_name, price atď. Namiesto vytvárania premenných pre každú z nich je možné použiť zjednotenie na zhutnenie všetkých rôznych dátových typov do jednej jednotky pomocou zjednotenia. Definuje sa pomocou kľúčového slova „zjednotenie“. Nasledovné vytvorí odvodenú knihu zjednotenia údajov.
unionBook{
názov znaku[20];
dvojitá cena;
};
Pre vyššie uvedené spojenie môžu byť premenné deklarované nasledovne.
union Book book1, book2;
Sú dva spôsoby prístupu k členom odboru. To je pomocou operátora člena (.) a operátora ukazovateľa štruktúry (->). K členom je možné pristupovať pomocou union_variable_name. meno člena. Ak chce programátor získať prístup k názvu knihy1, potom môže napísať príkaz ako printf(book1.name);
Pozri nižšie uvedený program s odborom.
Obrázok 02: Program C využívajúci spojenie
Podľa vyššie uvedeného programu je Kniha zväzom. Kniha1 je premenná typu union. Názov a cena sú priradené hodnoty. V odbore môže byť naraz prístupný iba jeden z jeho členov a všetci ostatní členovia budú mať hodnoty odpadu. Hodnota id sa nevytlačí správne, ale hodnota ceny sa vytlačí správne.
Obrázok 03: Upravený program C so spojením
Podľa vyššie uvedeného programu je Book zväzom. Book1 a book2 sú premenné typu únie. Najprv sa priradí hodnota názvu knihy 1 a vytlačí sa. Potom sa priradí hodnota názvu knihy 2 a vytlačí sa. Všetci členovia sa vytlačia správne, pretože jeden člen sa používa naraz. Pamäť potrebná na uloženie spojenia je pamäť potrebná pre najväčší prvok spojenia. Vo vyššie uvedenom programe je premenná názvu 20 bajtov. Je väčšia ako cena. Takže alokácia pamäte pre spojenie je 20 bajtov.
Aké sú podobnosti medzi štruktúrou a úniou v C?
- Štruktúra aj Union v jazyku C sú typy údajov definované používateľom.
- Štruktúru aj Union v jazyku C možno použiť na ukladanie rôznych typov údajov do rovnakého pamäťového miesta.
Aký je rozdiel medzi štruktúrou a úniou v C?
Štruktúra vs Union v C |
|
Štruktúra je používateľom definovaný dátový typ v jazyku C, ktorý umožňuje kombinovať dáta rôznych typov. | Union je používateľom definovaný dátový typ v jazyku C, ktorý umožňuje kombinovať dáta rôznych typov. |
Dostupnosť | |
V štruktúre sú všetci jej členovia kedykoľvek prístupní. | V únii môže byť súčasne prístupný iba jeden z jej členov a všetci ostatní členovia budú obsahovať odpadové hodnoty. |
Pridelenie pamäte | |
Pamäť potrebná na uloženie štruktúrnej premennej je súčtom veľkosti pamäte všetkých členov. | Pamäť potrebná na uloženie premennej zjednotenia je pamäť potrebná pre najväčší prvok v zjednotení. |
Kľúčové slovo | |
Kľúčové slovo používané na definovanie štruktúry je „struct“. | Kľúčové slovo používané na definovanie únie je „únia“. |
Summary – Structure vs Union in C
Pole sa používa na uloženie dátových prvkov rovnakého typu. Niekedy je potrebné ukladať dátové prvky rôznych typov do rovnakého pamäťového miesta. Programovací jazyk C poskytuje štruktúru a spojenie na splnenie tejto úlohy. Obidva typy údajov sú definované používateľom. Pamäť potrebná na uloženie štruktúrnej premennej je súčtom veľkosti pamäte všetkých členov. Pamäť potrebná na uloženie premennej zjednotenia je pamäť potrebná pre najväčší prvok v zjednotení. Toto je rozdiel medzi štruktúrou a zjednotením v C.