Čo je to Štruktúra?
Štruktúra je používateľom definovaný dátový typ v programovacom jazyku C, ktorý kombinuje logicky súvisiace dátové položky rôznych dátových typov dohromady.
Všetky prvky štruktúry sú uložené na susedných pamäťových miestach. Premenná typu štruktúra môže pod jedným názvom uložiť viac ako jednu dátovú položku s rôznymi typmi údajov.
V tomto návode sa dozviete:
- Čo je to Štruktúra?
- Čo je to Únia
- Syntax deklarovanej štruktúry
- Príklad štruktúry v C programovaní
- Syntax vyhlásenia únie
- Príklad únie v programovaní C.
- Štruktúra vs. Únie
- Výhody štruktúry
- Výhody zväzu
- Nevýhody štruktúry
- Nevýhody únie
Čo je to Únia
Union je používateľom definovaný dátový typ, rovnako ako štruktúra. Union kombinuje objekty rôznych typov a veľkostí. Zariaďovacia premenná alokuje pamäťový priestor rovný medzere, aby uchovala najväčšiu premennú zjednotenia. Umožňuje rôznym typom objektov zdieľať rovnaké umiestnenie.
Syntax deklarovanej štruktúry
struct [name of the structure]{type member1;type member2;type member3;};
Štruktúra sa deklaruje pomocou kľúčového slova „struct“ a názvu štruktúry. Číslo 1, číslo 2, číslo 3 sú jednotliví členovia štruktúry. Časť tela je ukončená bodkočiarkou (;).
Príklad štruktúry v C programovaní
#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;}
Vo vyššie uvedenom programe je vytvorená štruktúra s názvom študent. Táto štruktúra má troch dátových členov: 1) meno (reťazec), 2) roll_no (celé číslo) a 3) značky (float).
Potom sa vytvorí štruktúrna premenná sdt na ukladanie informácií o študentoch a ich zobrazovanie na obrazovke počítača.
Výkon:
Zadajte nasledujúce informácie:
Zadajte meno študenta: James
Zadajte číslo role študenta: 21
Zadajte známky študentov: 67
Informácie, ktoré ste zadali, sú:
Meno študenta: John
Číslo role študenta: 21
Známky študentov: 67,0
Syntax vyhlásenia únie
union [name of union]{type member1;type member2;type member3;};
Únia sa deklaruje pomocou kľúčového slova a názvu únie. Číslo 1, číslo 2, číslo 3 sú jednotliví členovia zväzu. Časť tela je ukončená bodkočiarkou (;).
Príklad únie v programovaní 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ýkon:
1101109601
20.199892
a
Vo vyššie uvedenom programe vidíte, že hodnoty x a y sa poškodia. Iba premenná ch vytlačí očakávaný výsledok. Je to preto, lebo v jednote je umiestnenie pamäte zdieľané medzi všetkými typmi údajov člena.
Jediný údajový člen, ktorého hodnota je momentálne uložená, teda zaberie miesto v pamäti. Hodnota premennej ch bola uložená nakoniec, takže hodnota ostatných premenných je stratená.
Štruktúra vs. Únie
Tu je dôležitý rozdiel medzi štruktúrou a odborom:
Štruktúra | Únie |
Na definovanie štruktúry môžete použiť kľúčové slovo struct. | Na definovanie únie môžete použiť kľúčové slovo únie. |
Každému členovi v rámci štruktúry je priradené jedinečné miesto v pamäti. | V jednote je miesto v pamäti zdieľané všetkými údajovými členmi. |
Zmena hodnoty jedného dátového člena nebude mať vplyv na ostatné dátové členy v štruktúre. | Zmenou hodnoty jedného dátového člena sa zmení hodnota ostatných dátových členov v únii. |
Umožňuje vám inicializovať niekoľko členov naraz. | Umožňuje vám inicializovať iba prvého člena únie. |
Celková veľkosť štruktúry je súčtom veľkosti každého údajového člena. | Celková veľkosť únie je veľkosťou najväčšieho dátového člena. |
Používa sa hlavne na ukladanie rôznych typov údajov. | Používa sa hlavne na ukladanie jedného z mnohých typov údajov, ktoré sú k dispozícii. |
Zaberá priestor pre každého člena napísaného vo vnútorných parametroch. | Zaberá miesto pre člena, ktorý má najväčšiu veľkosť zapísanú vo vnútorných parametroch. |
Môžete získať ľubovoľného člena naraz. | V rámci únie môžete mať prístup po jednom členovi. |
Podporuje flexibilné pole. | Nepodporuje flexibilné pole. |
Výhody štruktúry
Tu sú výhody a výhody použitia štruktúry:
- Štruktúry zhromažďujú viac ako jeden údaj o rovnakom predmete spolu na rovnakom mieste.
- Je užitočné, keď chcete zhromažďovať údaje podobných dátových typov a parametrov, ako je meno, priezvisko atď.
- Je veľmi ľahké sa udržiavať, pretože môžeme reprezentovať celý záznam pomocou jedného názvu.
- V štruktúre môžeme odovzdať kompletnú sadu záznamov akejkoľvek funkcii pomocou jediného parametra.
- Na uloženie viacerých záznamov s podobnými typmi môžete použiť pole štruktúry.
Výhody zväzu
Tu sú výhody a výhody používania únie:
- V porovnaní so štruktúrou zaberá menej pamäte.
- Ak použijete zjednotenie, je možné priamo pristupovať iba k poslednej premennej.
- Spojenie sa používa, keď musíte použiť to isté miesto v pamäti pre dvoch alebo viacerých dátových členov.
- Umožňuje vám uchovávať údaje iba jedného dátového člena.
- Jeho pridelený priestor sa rovná maximálnej veľkosti dátového člena.
Nevýhody štruktúry
Tu sú nevýhody / nevýhody použitia štruktúry:
- Ak zložitosť IT projektu presiahne limit, je ťažké ho zvládnuť.
- Zmena jednej dátovej štruktúry v kóde si vyžaduje zmeny na mnohých ďalších miestach. Preto je ťažké sledovať zmeny.
- Štruktúra je pomalšia, pretože vyžaduje úložný priestor pre všetky dáta.
- Môžete získať ľubovoľného člena v štruktúre, zatiaľ čo v únii máte prístup po jednom členovi.
- Štruktúra zaberá priestor pre každého člena zapísaného vo vnútorných parametroch, zatiaľ čo spojenie zaberá priestor pre člena, ktorý má najväčšiu veľkosť napísanú vo vnútorných parametroch.
- Štruktúra podporuje flexibilné pole. Únia nepodporuje flexibilné pole.
Nevýhody únie
Tu sú nevýhody / nevýhody používania únie:
- Naraz môžete použiť iba jedného člena únie.
- Všetky zjednocujúce premenné nemožno inicializovať alebo použiť s rôznymi hodnotami súčasne.
- Únia prideľuje všetkým svojim členom jeden spoločný úložný priestor.
KĽÚČOVÉ ROZDIELY:
- Každému členovi v štruktúre je priradené jedinečné miesto v pamäti, zatiaľ čo v zjednotení je miesto v pamäti zdieľané všetkými dátovými členmi.
- Zmena hodnoty jedného dátového člena nebude mať vplyv na ostatné dátové členy v štruktúre, zatiaľ čo zmena hodnoty jedného dátového člena zmení hodnotu ostatných dátových členov v únii.
- Štruktúra sa používa hlavne na ukladanie rôznych dátových typov, zatiaľ čo spojenie sa používa hlavne na ukladanie jedného z mnohých dátových typov.
- V štruktúre môžete načítať ľubovoľných členov naraz, na druhej strane v odboroch, máte prístup k jednotlivým členom naraz.
- Štruktúra podporuje flexibilné pole, zatiaľ čo spojenie nepodporuje flexibilné pole.