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.
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:
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..
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 | 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. |