Különbség a szerkezet és az unió között

Mind a szerkezet, mind az unió a felhasználó által meghatározott adattípusok a C nyelvben, és fogalmilag azonosak, ám ezek bizonyos szempontból továbbra is különböznek, például a memória elosztása a tagok számára. Hasonló módon deklarálják őket, de másképp működnek. Ezek lehetővé teszik a felhasználó számára, hogy a különféle adattípusokat egyetlen név alatt egyesítse. Míg a tagok külön memóriahelyet használnak a szerkezeti változók deklarálásakor, az unióváltozó különböző tagjai ugyanazt a memóriahelyet használják. Vizsgáljuk meg a szerkezet és az unió közötti különbséget.

Mi az a szerkezet??

A struktúra csak egy másik, a felhasználó által definiált adattípus a C-ben, amely lehetővé teszi a felhasználó számára, hogy a különféle típusú adattípusokat egyetlen memória blokkban egyesítse. A struktúra tartalmazhat egyszerű és összetett adattípusokat is, amelyek egymással kapcsolatban állnak, amelyek egyébként nem lesznek értelmesek. A struktúrán belüli minden tag megkapja a saját memóriahelyét, így bármikor hozzáférhető és letölthető.

A struktúrát akkor használják, amikor sok adatot kell csoportosítani, mint például egy könyvtár, amely sok tag információit tárolja egy könyvben, vagy egy címjegyzék, amely egyetlen névjegy adatait tárolja - név, cím, kapcsolatszám és így tovább. Az egyes tagok címe növekvő sorrendben lesz, ami azt jelenti, hogy az egyes tagok memóriája különböző eltolási értékekkel kezdődik. Az egyik tag értékének megváltoztatása nincs hatással a többi tagra.

A 'struct' kulcsszó a különféle adattípusok struktúrájának meghatározására szolgál egyetlen név alatt. Például, ha munkavállalói adatbázist szeretne létrehozni, akkor egyetlen entitásban kell tárolnia az alkalmazott nevét, életkorát, telefonját és fizetését. Ezt az 'struct' kulcsszó teszi meg, amely aztán megmondja a fordítónak, hogy egy struktúrát deklaráltak.

struct alkalmazott

karakterlánc neve;

húr kor;

húr telefon;

string fizetés;

emp1, emp2;

Itt az „alkalmazott” a szerkezet neve, és két „emp1” és „emp2” változót hozunk létre, az „alkalmazott” típusú. A záró kapcsokat pontosvessző követi (;).

A struktúrák tagjai kétféle üzemeltetővel érhetők el:

  1. Tag üzemeltető
  2. Szerkezeti mutató operátor

Mi az Unió??

Ez egy speciális adattípus, amelyet a C-ben használnak, amely lehetővé teszi a felhasználó számára, hogy különféle típusú adatokat tároljon ugyanazon a memóriahelyen. Az unió meglehetősen hasonló egy struktúrához és meghatározható úgy, hogy az „struct” kulcsszót az „union” kulcsszóval helyettesíti. A tagok átfedik egymás emlékét egy unióban, és elég nagy ahhoz, hogy minden tagja elférjen.

Ha egy változó társítva van az unióhoz, akkor a fordító a legnagyobb memória méretének figyelembe vételével osztja el a memóriát, tehát az unió mérete megegyezik a legnagyobb adattag méretével. Az unió meghatározható sok taggal, de csak egy tag tartalmazza az értéket egy adott időpéldányban.

A cím ugyanaz a szakszervezet minden tagjának, ami azt jelenti, hogy minden tag ugyanazon eltolási értékkel kezdődik. És az egyik tag értékének megváltoztatása befolyásolja a többi tag értékét. Az unió akkor használható, ha tárolni szeretne valamit, amely a többféle adattípus egyike.

szakszervezeti alkalmazott

char név [32];

int korban;

úszó fizetés;

;

Itt az „unió” kulcsszó az uniót határozza meg, amely nagyon hasonlít a szerkezet deklarálására. A változó vagy tárolhat egy string értéket, amely a “munkavállaló neve”, egy egész érték, amely a “munkavállaló életkora”, vagy egy úszó, amely a “munkavállaló fizetését” képviseli..

Különbség a szerkezet és az unió között

1. Kulcsszó

Az 'struct' kulcsszó egy struktúra meghatározására szolgál, míg az "union" kulcsszó az unió meghatározására szolgál.

2. Memória allokáció

A struktúrán belüli tagok számára külön memóriahely van fenntartva, és a tagok különböző címeivel nem osztják meg a memóriát. A szakszervezet viszont ugyanazt a memóriaterületet osztja meg minden tagja számára, így a megosztott memória helye el van osztva.

3. Tagok hozzáférése

A szakszervezet egyszerre egyetlen értéket tárol minden tagja számára, így egyszerre csak egy taghoz fér hozzá. Míg több érték tárolható egy struktúrában, így bármilyen tagérték bármikor elérhető és letölthető.

4. Méret

A struktúra mérete megegyezik az összes vagy annál nagyobb tagok összegével, míg az unió mérete megegyezik a legnagyobb méretű tag méretével.

5. Inicializálás

Egy struktúrában több tag is inicializálható egyszerre, míg unión belül csak az első tag inicializálható a típus értékével.

5. Érték

Egy struktúra tárolhatja az összes tag különböző értékeit, és az egyik tag értékének változása nincs hatással a többi tag értékére. Míg a szakszervezet ugyanazt az értéket tárolja minden tagja számára, és az egyik tag értékének megváltozása befolyásolja a másik értékét.

Szerkezet és az Unió

Szerkezet Unió
A sztruktúra kulcsszó a struktúra meghatározására szolgál. Az Union kulcsszó az unió meghatározására szolgál.
A tagok nem osztják meg a memóriát egy struktúrában. A tagok megosztják a memóriaterületet egy unióban.
Bármely tag bármikor lehívható a struktúrából. Egy unióban egyszerre csak egy tag férhet hozzá.
Egy struktúra több tagja inicializálható egyszerre. Csak az első tag inicializálható.
A szerkezet mérete megegyezik az egyes elemek méretének összegével. Az unió mérete megegyezik a legnagyobb tag méretével.
Az egyik tag megváltoztatása nem érinti a másik értékét. Az egyik tag értékének változása befolyásolja a többi tag értékét.
Különböző értékeket tárol az összes tag számára. Minden tag számára azonos értéket tárol.

összefoglalás

  • Mind a szerkezet, mind az unió felhasználó által definiált adattípusok a C-ben, amelyek funkcionálisan és koncepcionálisan megegyeznek, ám bizonyos értelemben nagyon eltérőek.
  •  Mindkettő különféle adattípusokat tartalmaz, de ugyanazt a szintaxist használja a változók deklarálására és a tagok elérésére. Míg a struktúrát az 'struct' kulcsszó határozza meg, az uniót az 'union' kulcsszó határozza meg.
  • Minden tag külön memóriahelyet kap egy struktúrában, míg egy unióban a teljes memóriaterület megegyezik a legnagyobb méretű taggal. Az összes tagnak ugyanaz a memóriaterülete van egy unióban.
  • Bármelyik sorozat bármely tagja hozzáférhető struktúrában, míg unióban csak az a változó érhető el, amelynek értékét a közelmúltban tárolták.