Rozdíl mezi strukturou a unií

Struktura i unie jsou uživatelsky definované datové typy v jazyce C a jsou pojmově stejné, nicméně stále se v některých ohledech liší, jako je způsob přidělování paměti jejich členům. Jsou deklarovány podobně, ale fungují odlišně. Umožňují uživateli kombinovat různé typy dat pod jedním jménem. Zatímco pro deklaraci strukturních proměnných je pro každý člen použito samostatné paměťové umístění, různé členy unijní proměnné sdílejí stejné paměťové umístění. Pojďme studovat rozdíl mezi strukturou a jednotou je detail.

Co je struktura?

Struktura je pouze dalším uživatelem definovaným datovým typem v C, který uživateli umožňuje kombinovat datové typy různého druhu do jednoho typu v bloku paměti. Struktura může obsahovat jednoduché i složité datové typy, které spolu souvisejí, což by jinak nedávalo smysl. Každý člen ve struktuře získá své vlastní paměťové místo, takže k němu může kdykoli přistupovat a získat jej.

Struktura se používá, když mnoho dat potřebuje seskupení jako adresář, který ukládá informace o mnoha členech do knihy nebo do adresáře, který ukládá všechny informace o jediném kontaktu - jméno, adresa, číslo kontaktu atd. Adresa každého prutu bude ve vzestupném pořadí, což znamená, že paměť každého prutu začne u různých hodnot ofsetu. Změna hodnoty jednoho člena nebude mít žádný vliv na ostatní členy.

Klíčové slovo „struct“ se používá k definování struktury různých typů dat pod jedním jménem. Pokud například chcete vytvořit databázi zaměstnanců, budete muset ukládat jméno, věk, telefon a mzdové údaje zaměstnance do jedné entity. To se provádí pomocí klíčového slova 'struct', které potom řekne kompilátoru, že struktura byla deklarována.

strukt zaměstnanec

název řetězce;

věk struny;

smyčkový telefon;

strunový plat;

emp1, emp2;

Zde je „zaměstnanec“ název struktury a jsou vytvořeny dvě proměnné „emp1“ a „emp2“ typu „zaměstnanec“. Za zavěšenými závorkami musí následovat středník (;).

Ke členům struktury mohou přistupovat dva typy operátorů:

  1. Členský operátor
  2. Operátor ukazatele struktury

Co je unie?

Jedná se o speciální datový typ používaný v C, který umožňuje uživateli ukládat datové typy různých druhů na stejném místě v paměti. Spojení je velmi podobné struktuře a lze jej definovat nahrazením klíčového slova „struct“ klíčovým slovem „union“. Členové překrývají vzájemnou vzpomínku v unii a je dostatečně velká, aby se vešly všechny její členy.

Pokud je proměnná spojena s jednotkou, kompilátor přidělí paměť zvážením velikosti největší paměti, takže velikost spojení je stejná jako velikost největšího datového člena. Spojení lze definovat s mnoha členy, ale pouze jeden člen obsahuje hodnotu v kterékoli dané instanci času.

Adresa je stejná pro všechny členy unie, což znamená, že každý člen začíná na stejné hodnotě offsetu. A změna hodnoty jednoho člena ovlivní hodnoty ostatních členů. Spojení lze použít, pokud chcete uložit něco, co je jedním z několika typů dat.

odborový zaměstnanec

znak char [32];

int věk;

plovákový plat;

;

Klíčové slovo „unie“ zde definuje spojení, které je velmi podobné deklaraci struktury. Proměnná může ukládat řetězcovou hodnotu, která je „jméno zaměstnance“, celé číslo, které je „věkem zaměstnance“, nebo float, který představuje „plat zaměstnance“.

Rozdíl mezi strukturou a unií

1. Klíčové slovo

Klíčové slovo „struct“ se používá k definování struktury, zatímco klíčové slovo „union“ se používá k definování spojení.

2. Přidělení paměti

Pro členy v rámci struktury je přiděleno oddělené paměťové místo a členy mají různé adresy, které nesdílejí paměť. Spojení na druhé straně sdílí stejný paměťový prostor pro všechny své členy, takže umístění sdílené paměti je přiděleno.

3. Členský přístup

Svaz ukládá jedinou hodnotu najednou pro všechny své členy, aby zpřístupnil pouze jeden člen najednou. Ve struktuře lze uložit více hodnot, takže kdykoli lze získat a získat libovolnou hodnotu člena.

4. Velikost

Velikost struktury se rovná součtu velikosti všech členů nebo více, zatímco velikost unie se rovná velikosti největšího člena velikosti.

5. Inicializace

Ve struktuře může být několik členů inicializováno najednou, zatímco v unii může být inicializován pouze první člen s hodnotou svého typu.

5. Hodnota

Struktura může ukládat různé hodnoty všech členů a změna hodnoty jednoho člena nebude mít žádný vliv na hodnoty ostatních členů. Zatímco unie ukládá stejnou hodnotu pro všechny své členy a změna hodnoty jednoho člena ovlivní hodnotu ostatních.

Struktura vs. unie

Struktura unie
Klíčové slovo Struct se používá k definování struktury. Klíčové slovo unie se používá k definování unie.
Členové nesdílejí paměť ve struktuře. Členové sdílejí paměťový prostor v unii.
Ve struktuře lze kdykoli získat libovolného člena. V odborech může být najednou přístup pouze k jednomu členovi.
Několik členů struktury může být inicializováno najednou. Inicializovat lze pouze prvního člena.
Velikost struktury se rovná součtu velikosti každého člena. Velikost unie se rovná velikosti největšího člena.
Změna hodnoty jednoho člena neovlivní hodnotu druhého. Změna hodnoty jednoho člena ovlivní ostatní hodnoty člena.
Ukládá různé hodnoty pro všechny členy. Uchovává stejnou hodnotu pro všechny členy.

souhrn

  • Struktura i unie jsou uživatelsky definované datové typy v C, které jsou funkčně i koncepčně stejné, ale v některých ohledech jsou zcela odlišné.
  •  Obě obsahují proměnné různých datových typů, ale používají stejnou syntaxi pro deklaraci proměnných a přístup členů. Zatímco struktura je definována klíčovým slovem „struct“, unie je definována klíčovým slovem „union“.
  • Každý člen dostane samostatné umístění paměti ve struktuře, zatímco v unii je celkový paměťový prostor ekvivalentní členu s největší velikostí. Všichni členové sdílejí stejný paměťový prostor v unii.
  • K libovolnému členu v libovolné posloupnosti lze přistupovat ve struktuře, zatímco v unii lze přistupovat pouze k této proměnné, jejíž hodnota je nedávno uložena.