A szerkezet és az unió közötti különbség A különbség

Anonim

a struktúra és az unió a C nyelvben a felhasználó által definiált adattípusok, és koncepcionálisan ugyanazok, mégis különböznek valamilyen módon, mint például a memória tagok számára történő elosztásának módja. Hasonlóan deklaráltak, de eltérő módon működnek. Lehetővé teszik a felhasználó számára, hogy különböző adattípusokat kombináljon egyetlen név alatt. Míg különálló memóriahelyet használnak az egyes tagok számára struktúraváltozók kijelentésekor, a szakszervezeti változó különböző tagjai ugyanazt a memóriahelyet osztják meg. Vizsgáljuk meg a különbséget a szerkezet és a szakszervezet között.

Mi a szerkezet?

A struktúra csak egy másik felhasználó által definiált adattípus a C-ben, amely lehetővé teszi a felhasználó számára, hogy különböző típusú adattípusokat egy memóriablokk egyetlen típusába ötvözi. A struktúra tartalmazhat mind az egyszerű és összetett adattípusokat, amelyek egymáshoz kapcsolódnak, máskülönben nincs értelme. A struktúrán belül minden egyes tag saját memóriahelyet kap, hogy bármikor hozzáférhessen és letölthető legyen.

Olyan struktúrát használunk, amikor egy csomó adat kell csoportosítani, mint egy olyan könyvtárat, amely információkat tárol egy könyvben vagy címjegyzékben lévő olyan tagokról, amely egyetlen névvel, névvel, címmel, a kapcsolattartó számot stb. Az egyes tagok címe növekvő sorrendben történik, ami azt jelenti, hogy az egyes tagok memóriája különböző offset értékekkel kezdődik. Az egyik tag értékének megváltoztatása nem lesz hatással más tagokra.

A 'struct' kulcsszót különböző adattípusok struktúrájának meghatározására használják egy név alatt. Ha például munkavállalói adatbázist szeretne létrehozni, a munkavállaló nevét, korát, telefonját és fizetési adatait egy egységen belül kell tárolnia. Ezt a "struct" kulcsszó végzi, amely azt mondja a fordítónak, hogy egy struktúrát deklarált.

struct worker {

string név;

string kor;

string telefon;

string fizetés;

} emp1, emp2;

Itt a "munkavállaló" a szerkezet neve, és két "emp1" és "emp2" változót hoznak létre a "munkavállaló" típusból. A záró zárójeleket egy pontosvesszővel (;) kell követni.

A struktúrák tagjai két típusú üzemeltetőhöz férhetnek hozzá:

  1. Tag-üzemeltető
  2. Szerkezetmutató-üzemeltető

Mi az az Unió?

Ez egy speciális adattípust használ a C-ben, amely lehetővé teszi a felhasználó számára, hogy különböző típusú adattípusokat tároljon ugyanazon a memóriahelyen. Egy szakszervezet nagyon hasonlít egy struktúrához, és meghatározható a "struct" kulcsszó helyett az "unió" kulcsszóval. A tagok egyesítik az egymás emlékét, és elég nagy ahhoz, hogy minden tagját el tudja látni.

Ha egy változó az egyesítéshez kapcsolódik, akkor a fordító a legnagyobb memória méretének megfontolásával szétosztja a memóriát, így az egyesülés mérete megegyezik a legnagyobb adat tag méretével.Egy egyesülés definiálható sok taggal, de csak egy tag tartalmazza az értéket az adott időpontban.

A cím azonos az egyes szakszervezet tagjai számára, ami azt jelenti, hogy minden tag ugyanazon offset értéknél indul. És egy tag értékének megváltoztatása befolyásolja a többi tag értékeit. Egy szakszervezet akkor használható, ha olyan adattípusok egyikét kívánja tárolni, amelyek egyike.

szakszervezeti alkalmazott {

char név [32];

int age;

úszó fizetés;

};

Itt az "unió" kulcsszó meghatározza azt a szakszervezetet, amely nagyon hasonló a struktúra deklarációjához. A változó vagy egy olyan karakterláncot tárolhat, amely a "munkavállaló neve", egész szám, amely a "munkavállaló életkora", vagy egy olyan float, amely a munkavállaló "fizetését" jelenti.

A szerkezet és az unió közötti különbség

1. Kulcsszó

A "struct" kulcsszó egy struktúrát definiál, míg az "unió" kulcsszó egy unió meghatározására szolgál.

2. Memóriaelosztás

Egy különálló memóriahely van kijelölve a tagok számára egy struktúrában, és a tagok különböző címekkel rendelkeznek, amelyek nem osztják a memóriát. A szakszervezet ugyanakkor ugyanazt a memóriahelyet osztja meg tagjai számára, így megosztott memóriahelyet osztanak ki.

3. Tag-hozzáférés

Egy egység egyetlen értéket tárol egyszerre, annak tagjai számára, amelyek egyszerre csak egy tagot tudnak elérni. Míg több érték tárolható egy struktúrában, így bármely tagérték elérése és lekérése bármikor lehetséges.

4. Méret

A szerkezet mérete megegyezik az összes tag vagy több méretének összegével, míg az egyesülés mérete megegyezik a legnagyobb tag méretével.

5. Inicializálás

Egy struktúrában egyszerre több tag lehet inicializálni, míg egy szakszervezetben csak az első tag lehet inicializálni a típusának értékével.

5. Value

A struktúra különböző tagok különböző értékeit tárolhatja, és az egyik tag értéke megváltoztatásának nincs hatása más tagok értékeire. Míg a szakszervezet ugyanazt az értéket tárolja minden tagja számára, és egy tag értékváltozása befolyásolja más értékét.

Struktúra és unió

Struktúra Unió
A struktúra kulcsszót egy struktúra meghatározására használják. Az uniós kulcsszó egy 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óriahelyet egy unióban.
Bármelyik tag bármikor lekérhető egy struktúrában. Csak egy tag érhető el egyszerre egy szakszervezetben.
Egyszerre számos struktúra tag lehet inicializálni. Csak az első tag lehet inicializálni.
A szerkezet mérete megegyezik az egyes tagok méretével. Az egyesülés mérete megegyezik a legnagyobb tag méretével.
Egy tag megváltoztatása nem befolyásolja a másik értékét. Egy tag értékének változása befolyásolja a többi tagértéket.
Különböző értékeket tárol minden tag számára. Az összes tag számára ugyanazt az értéket tárolja.

Összegzés

  • Mind a szerkezet, mind az unió a C-ben definiált felhasználó által definiált adattípusok, amelyek funkcionálisan és koncepcionálisan ugyanazok, de valamilyen módon teljesen eltérőek.
  • Mindkettő különböző típusú adattípusokat tartalmaz, de ugyanazt a szintaxist használja a változók deklarálásához és a tagok eléréséhez. Bár a struktúrát a "struct" kulcsszó definiálja, egy szakszervezetet az "unió" kulcsszó határoz meg.
  • Minden egyes tag különálló memóriahelyet kap egy struktúrában, míg egy unióban a teljes memória a legnagyobb taggal egyenértékű. Minden tag ugyanazt a memóriaterületet egy szakszervezetben használja.
  • Bármelyik szekvenciában lévő tag elérhető egy struktúrában, míg egy szakszervezetben csak a változóhoz érhető el, amelynek értékét a közelmúltban tárolták.