Co je struktura?
Struktura je uživatelem definovaný datový typ v programovacím jazyce C, který kombinuje logicky související datové položky různých datových typů dohromady.
Všechny prvky struktury jsou uloženy na souvislých paměťových místech. Proměnná typu struktura může pod jedním názvem uložit více než jednu datovou položku různých datových typů.
V tomto výukovém programu se naučíte:
- Co je struktura?
- Co je to Unie
- Syntaxe deklarační struktury
- Příklad struktury v programování C.
- Syntaxe deklarace unie
- Příklad unie v programování C.
- Struktura vs. unie
- Výhody struktury
- Výhody spojení
- Nevýhody struktury
- Nevýhody unie
Co je to Unie
Sjednocení je uživatelem definovaný datový typ, stejně jako struktura. Union kombinuje objekty různých typů a velikostí dohromady. Spojovací proměnná přiděluje paměťový prostor rovný prostoru, aby se udržela největší proměnná sjednocení. Umožňuje různým typům objektů sdílet stejné umístění.
Syntaxe deklarační struktury
struct [name of the structure]{type member1;type member2;type member3;};
Struktura je deklarována pomocí klíčového slova „struct“ a názvu struktury. Číslo 1, číslo 2, číslo 3 jsou jednotliví členové struktury. Část těla je ukončena středníkem (;).
Příklad struktury v programování C.
#includestruct student {char name[60];int roll_no;float marks;} sdt;int main() {printf("Enter the following information:\n");printf("Enter student name: ");fgets(sdt.name, sizeof(sdt.name), stdin);printf("Enter student roll number: ");scanf("%d", & sdt. roll_no);printf("Enter students marks: ");scanf("%f", & sdt.marks);printf("The information you have entered is: \n");printf("Student name: ");printf("%s", sdt.name);printf("Student roll number: %d\n", sdt. roll_no);printf("Student marks: %.1f\n", sdt.marks);return 0;}
Ve výše uvedeném programu je vytvořena struktura zvaná student. Tato struktura má tři datové členy: 1) název (řetězec), 2) roll_no (celé číslo) a 3) značky (float).
Poté se vytvoří strukturní proměnná sdt pro ukládání informací o studentech a jejich zobrazení na obrazovce počítače.
Výstup:
Zadejte následující informace:
Zadejte jméno studenta: James
Zadejte číslo role studenta: 21
Zadejte známky studentů: 67
Informace, které jste zadali, jsou:
Jméno studenta: John
Číslo role studenta: 21
Známky studentů: 67,0
Syntaxe deklarace unie
union [name of union]{type member1;type member2;type member3;};
Union je deklarován pomocí klíčového slova „union“ a názvu odboru. Číslo 1, číslo 2, číslo 3 jsou jednotliví členové svazu. Část těla je ukončena středníkem (;).
Příklad unie v programování C.
#includeunion item{int x;float y;char ch;};int main( ){union item it;it.x = 12;it.y = 20.2;it.ch = 'a';printf("%d\n", it.x);printf("%f\n", it.y);printf("%c\n", it.ch);return 0;}
Výstup:
1101109601
20.199892
A
Ve výše uvedeném programu vidíte, že hodnoty xay jsou poškozeny. Pouze proměnná ch vytiskne očekávaný výsledek. Je to proto, že v unii je místo v paměti sdílené mezi všemi datovými typy členů.
Jediný datový člen, jehož hodnota je aktuálně uložena, tedy zabírá paměťový prostor. Hodnota proměnné ch byla uložena jako poslední, takže hodnota zbývajících proměnných je ztracena.
Struktura vs. unie
Zde je důležitý rozdíl mezi strukturou a unií:
Struktura | unie |
K definování struktury můžete použít klíčové slovo struct. | Pro definici spojení můžete použít klíčové slovo union. |
Každému členovi ve struktuře je přiřazeno jedinečné místo v paměti. | Ve spojení je umístění v paměti sdílené všemi datovými členy. |
Změna hodnoty jednoho datového člena nebude mít vliv na ostatní datové členy ve struktuře. | Změnou hodnoty jednoho datového člena se změní hodnota ostatních datových členů ve spojení. |
Umožňuje vám inicializovat několik členů najednou. | Umožňuje vám inicializovat pouze prvního člena unie. |
Celková velikost struktury je součtem velikosti každého datového člena. | Celková velikost sjednocení je velikost největšího datového člena. |
Používá se hlavně pro ukládání různých datových typů. | Používá se hlavně k ukládání jednoho z mnoha typů dat, které jsou k dispozici. |
Zabírá prostor pro každého člena zapsaného ve vnitřních parametrech. | Zabírá místo pro člena, který má nejvyšší velikost zapsanou ve vnitřních parametrech. |
Můžete načíst libovolného člena najednou. | V unii můžete přistupovat po jednom členovi. |
Podporuje flexibilní pole. | Nepodporuje flexibilní pole. |
Výhody struktury
Zde jsou výhody / výhody pro použití struktury:
- Struktury shromažďují více než jeden údaj o stejném předmětu společně na stejném místě.
- Je užitečné, když chcete shromažďovat data podobných datových typů a parametrů, jako je křestní jméno, příjmení atd.
- Je velmi snadné jej udržovat, protože můžeme reprezentovat celý záznam pomocí jediného jména.
- Ve struktuře můžeme předat kompletní sadu záznamů jakékoli funkci pomocí jediného parametru.
- K uložení více záznamů s podobnými typy můžete použít pole struktury.
Výhody spojení
Zde jsou výhody / výhody pro používání unie:
- Zabírá méně paměti ve srovnání se strukturou.
- Při použití sjednocení lze přímo přistupovat pouze k poslední proměnné.
- Spojení se používá, když musíte použít stejné místo v paměti pro dva nebo více datových členů.
- Umožňuje vám uchovávat data pouze jednoho datového člena.
- Jeho přidělené místo se rovná maximální velikosti datového člena.
Nevýhody struktury
Zde jsou nevýhody / nevýhody použití struktury:
- Pokud složitost IT projektu přesáhne limit, bude obtížné jej zvládnout.
- Změna jedné datové struktury v kódu vyžaduje změny na mnoha dalších místech. Proto je těžké sledovat změny.
- Struktura je pomalejší, protože vyžaduje úložný prostor pro všechna data.
- Můžete načíst libovolného člena najednou ve struktuře, zatímco v unii můžete přistupovat po jednom členu najednou.
- Struktura zabírá prostor pro každého člena zapsaného ve vnitřních parametrech, zatímco sjednocení zabírá prostor pro člena, který má nejvyšší velikost zapsanou ve vnitřních parametrech.
- Struktura podporuje flexibilní pole. Union nepodporuje flexibilní pole.
Nevýhody unie
Zde jsou nevýhody / nevýhody použití unie:
- Můžete použít pouze jednoho člena odboru najednou.
- Všechny sjednocující proměnné nelze inicializovat nebo použít s různými hodnotami najednou.
- Union přiřadí jeden společný úložný prostor všem svým členům.
KLÍČOVÉ ROZDÍLY:
- Každému členovi ve struktuře je přiřazeno jedinečné místo v paměti, zatímco v jednotce je místo v paměti sdíleno všemi datovými členy.
- Změna hodnoty jednoho datového člena nebude mít vliv na ostatní datové členy ve struktuře, zatímco změna hodnoty jednoho datového člena změní hodnotu ostatních datových členů ve spojení.
- Struktura se používá hlavně pro ukládání různých datových typů, zatímco sjednocení se používá hlavně pro ukládání jednoho z mnoha datových typů.
- Ve struktuře můžete načíst libovolného člena najednou, na druhou stranu v odboru, můžete přistupovat po jednom členu.
- Struktura podporuje flexibilní pole, zatímco sjednocení nepodporuje flexibilní pole.