Rozdiel medzi štruktúrou a úniou

Štruktúra aj zjednotenie sú užívateľsky definované typy údajov v jazyku C a sú koncepčne rovnaké, stále sa však v niektorých ohľadoch líšia, napríklad v spôsobe, akým je pamäť pridelená ich členom. Vyhlasujú sa podobne, ale fungujú odlišne. Umožňujú užívateľovi kombinovať rôzne typy údajov pod jedným menom. Zatiaľ čo pri deklarovaní premenných štruktúry sa pre každý člen používa samostatné miesto v pamäti, rôzne členy jednotkovej premennej zdieľajú rovnaké miesto v pamäti. Poďme študovať rozdiel medzi štruktúrou a jednotou je detail.

Čo je štruktúra?

Štruktúra je iba ďalším používateľom definovaným typom údajov v C, ktorý umožňuje používateľovi kombinovať dátové typy rôzneho druhu do jedného typu v bloku pamäte. Štruktúra môže obsahovať jednoduché aj zložité typy údajov, ktoré sú navzájom prepojené, čo by inak nedávalo zmysel. Každý člen v rámci štruktúry získa svoje vlastné miesto v pamäti, aby k nemu mohol kedykoľvek získať prístup a získať ho.

Štruktúra sa používa, keď veľa údajov potrebuje zoskupenie, napríklad adresár, v ktorom sú uložené informácie o mnohých členoch v knihe alebo v adresári, v ktorom sú uložené všetky informácie o jednom kontakte - meno, adresa, číslo kontaktu atď. Adresa každého člena bude vzostupne, čo znamená, že pamäť každého člena začne pri rôznych hodnotách posunu. Zmena hodnoty jedného člena nebude mať na ostatných členov žiadny vplyv.

Kľúčové slovo „struct“ sa používa na definovanie štruktúry rôznych typov údajov pod jedným menom. Napríklad, ak chcete vytvoriť databázu zamestnancov, budete musieť uložiť meno, vek, telefón a platové údaje zamestnanca pod jednu entitu. To sa deje pomocou kľúčového slova „struct“, ktoré potom oznámi kompilátoru, že bola deklarovaná štruktúra.

štruktur zamestnanec

názov reťazca;

strunový vek;

strunový telefón;

strunový plat;

emp1, emp2;

Tu je „zamestnanec“ názov štruktúry a vytvoria sa dve premenné „emp1“ a „emp2“ typu „zamestnanec“. Za závorami musia nasledovať bodkočiarka (;).

Členovia štruktúry môžu mať prístup k dvom typom operátorov:

  1. Členský prevádzkovateľ
  2. Operátor ukazovateľa štruktúry

Čo je Únia?

Je to špeciálny dátový typ používaný v C, ktorý umožňuje užívateľovi ukladať dátové typy rôznych druhov na rovnaké miesto v pamäti. Únia je dosť podobná štruktúre a dá sa definovať nahradením kľúčového slova „struct“ kľúčovým slovom „union“. Členovia prekrývajú vzájomnú pamäť v odboroch a je dosť veľká, aby sa zmestili všetci jej členovia.

Ak je premenná priradená k zviazaniu, kompilátor pridelí pamäť zvážením veľkosti najväčšej pamäte, takže veľkosť zviazania sa rovná veľkosti najväčšieho dátového člena. Úniu možno definovať s mnohými členmi, ale iba jeden člen obsahuje hodnotu v danom časovom okamihu.

Adresa je rovnaká pre všetkých členov únie, čo znamená, že každý člen začína rovnakou hodnotou ofsetu. A zmena hodnoty jedného člena ovplyvní hodnoty ostatných členov. Spojenie môžete použiť, keď chcete uložiť niečo, čo je jedným z niekoľkých typov údajov.

zamestnanec odboru

znak char [32];

int vek;

plavák;

;

Kľúčové slovo „únia“ tu definuje spojenie, ktoré je dosť podobné deklarácii štruktúry. Ukazovateľ môže uchovávať buď reťazcovú hodnotu, ktorá je „meno zamestnanca“, celé číslo, ktoré predstavuje „vek zamestnanca“, alebo float, ktorý predstavuje „plat zamestnanca“..

Rozdiel medzi štruktúrou a úniou

1. Kľúčové slovo

Kľúčové slovo „struct“ sa používa na definovanie štruktúry, zatiaľ čo kľúčové slovo „union“ sa používa na definovanie spojenia.

2. Pridelenie pamäte

Členom v rámci štruktúry je pridelený samostatný pamäťový priestor a členovia majú rôzne adresy, ktoré nezdieľajú pamäť. Únia, na druhej strane, zdieľa rovnaký pamäťový priestor pre všetkých svojich členov, takže umiestnenie zdieľanej pamäte je pridelené.

3. Členský prístup

Únia ukladá naraz jednu hodnotu pre všetkých svojich členov, ktorí sprístupňujú naraz iba jeden člen. Kým v štruktúre je možné uložiť viacero hodnôt, kedykoľvek je možné získať a získať ľubovoľnú hodnotu člena.

4. Veľkosť

Veľkosť štruktúry sa rovná súčtu veľkosti všetkých členov alebo viac, zatiaľ čo veľkosť odboru sa rovná veľkosti člena s najväčšou veľkosťou..

5. Inicializácia

V štruktúre je možné inicializovať niekoľko členov naraz, zatiaľ čo v zväzku sa môže inicializovať iba prvý člen s hodnotou jeho typu..

5. Hodnota

Štruktúra môže ukladať rôzne hodnoty všetkých členov a zmena hodnoty jedného člena nebude mať žiadny vplyv na hodnoty ostatných členov. Zatiaľ čo odbor ukladá rovnakú hodnotu pre všetkých svojich členov a zmena hodnoty jedného člena ovplyvní hodnotu ostatných.

Štruktúra vs. únia

štruktúra zväz
Kľúčové slovo Struct sa používa na definovanie štruktúry. Kľúčové slovo únie sa používa na definovanie únie.
Členovia nezdieľajú pamäť v štruktúre. Členovia zdieľajú pamäťový priestor v odboroch.
V štruktúre je možné kedykoľvek získať ktoréhokoľvek člena. V odboroch môže byť naraz narazený iba jeden člen.
Niekoľko členov štruktúry môže byť inicializovaných naraz. Inicializovať sa môže iba prvý člen.
Veľkosť štruktúry sa rovná súčtu veľkosti každého člena. Veľkosť odboru sa rovná veľkosti najväčšieho člena.
Zmena hodnoty jedného člena neovplyvní hodnotu iného člena. Zmena hodnoty jedného člena ovplyvní ostatné hodnoty člena.
Uloží rôzne hodnoty pre všetkých členov. Uchováva rovnakú hodnotu pre všetkých členov.

zhrnutie

  • Štruktúra aj spojenie sú užívateľsky definované typy údajov v C, ktoré sú funkčne a koncepčne rovnaké, ale v niektorých ohľadoch sú dosť odlišné..
  •  Obidve obsahujú premenné rôznych typov údajov, ale na deklarovanie premenných a prístup k členom používajú rovnakú syntax. Zatiaľ čo štruktúra je definovaná kľúčovým slovom „struct“, spojenie je definované kľúčovým slovom „union“.
  • Každý člen dostane samostatné miesto v štruktúre, zatiaľ čo v jednotke je celkový pamäťový priestor ekvivalentný členu s najväčšou veľkosťou. Všetci členovia zdieľajú rovnaké miesto v zväzku.
  • Prístup ku ktorémukoľvek členovi v ktorejkoľvek sekvencii je možný v štruktúre, zatiaľ čo v jednotke sa dá pristupovať iba k tejto premennej, ktorej hodnota je nedávno uložená.