Kiemelt különbség – Struktúra kontra Unió a C
A tömb egy C nyelv által támogatott adatszerkezet. Egy tömb használható azonos típusú adatelemek tárolására. Ha van utasítás int jelként [10]; akkor a marks egy tömb, amely tíz jelet tud tárolni, és mindegyik egész szám. Néha szükség van különböző típusú adatelemek tárolására ugyanazon a memóriahelyen. Például egy alkalmazottnak lehet alkalmazotti azonosítója, neve, osztálya, életkora stb. Ezek különböző adattípusúak. Ezért szükség van egy módszerre a különböző adatelemek egyetlen egységként történő tárolására. A C-beli struktúrák és uniók különböző típusú adatelemek tárolására szolgálnak ugyanazon a memóriahelyen. A struktúra és az unió hasonló, de főként a memóriafoglalás miatt különböznek egymástól. A szerkezeti változó tárolásához szükséges memória az összes tag memóriaméretének összegzése. Az unióváltozó tárolásához szükséges memória az unió legnagyobb eleméhez szükséges memória. Ez a legfontosabb különbség a C szerkezete és uniója között. Ez a cikk a C struktúra és az unió közötti különbséget tárgyalja.
Mi az a struktúra a C-ben?
A struktúra egy felhasználó által definiált adattípus a C nyelvben. Segít a különböző típusú adatelemek kombinálásában. Egy struktúra reprezentálhat rekordokat. A tanulónak rendelkezhet tanulóazonosítóval, tanulónévvel stb.. Ahelyett, hogy minden változót külön-külön tárolnánk, az összes különböző adatelem egy struktúra segítségével egyetlen egységbe tömöríthető. Meghatározása a „struct” kulcsszó használatával történik. Egy struktúrában minden tagja bármikor elérhető. A következő egy származtatott adattípusú struct Studentet hoz létre.
struct Student {
intstudent_id;
char tanuló_neve[20];
};
A fenti szerkezethez a változók a következőképpen deklarálhatók.
struct Student diák1, diák2, diák3;
Két módszerrel lehet elérni a struktúra tagjait. Ez a tag operátor (.) és a szerkezetmutató operátor (->) használatával történik. A tagok a változó_neve szerkezettel érhetők el. tag név. Ha a programozó hozzá akar férni a 2. tanuló nevéhez, akkor az utasítást a következőképpen írhatja: printf(student2.student_name);
Nézze meg az alábbi programot egy szerkezettel.
01. ábra: C program struktúrákkal
A fenti program szerint a Student egy szerkezet. Tartalmazza a diák_azonosítót és a tanuló_nevet. A főprogramban két struktúra típusú változó van deklarálva. Student1-nek és diák2-nek hívják őket. A diák1 azonosítója 1-es értékkel van hozzárendelve a tagoperátor használatával, mint student1.student_id=1. Az „Ann” név egy karakterlánc. Ezért az strcpy karakterlánc másolási függvény segítségével a tanuló_neve tagba másolódik. Az azonosító és a név hasonló módon van hozzárendelve a student2-hez. Végül ezek az értékek a tag operátor használatával kerülnek kinyomtatásra.
A struktúraváltozó tárolásához szükséges memória mennyisége az összes tag memóriaméretének összege. A tanulóazonosító 4 bájtot, a tanuló_neve pedig 20 bájtot tartalmaz (egy-egy bájt egy karakterhez). Az összesen 24 bájt a struktúra által igényelt memóriaméret összege.
Mi az Unió a C-ben?
A unió egy felhasználó által definiált adattípus a C nyelvben. Segít a különböző adattípusok ugyanazon a memóriahelyen történő tárolásában. Egy könyvnek lehetnek olyan tulajdonságai, mint a könyv_neve, ár stb. Ahelyett, hogy mindegyikhez változókat hoznánk létre, egy unió használható arra, hogy az összes különböző adattípust egyetlen egységbe tömörítse egy unióval. Meghatározása az „unió” kulcsszó használatával történik. A következő egy származtatott adategyesítő könyvet hoz létre.
szakszervezetikönyv{
karakternév[20];
dupla ár;
};
A fenti unióhoz a változók a következőképpen deklarálhatók.
szakszervezet Könyv könyv1, könyv2;
Két módszerrel lehet elérni a szakszervezet tagjait. Ez a tag operátor (.) és a szerkezetmutató operátor (->) használatával történik. A tagok az union_variable_name paranccsal érhetők el. tag név. Ha a programozó hozzá akar férni a könyv1 nevéhez, akkor az utasítást printf(könyv1.név);
Tekintse meg az alábbi programot egy szakszervezettel.
02. ábra: C program uniót használva
A fenti program szerint a Könyv egy unió. A könyv1 egy union típusú változó. A név és az ár hozzárendelt értékek. Az unióban egyszerre csak az egyik tagja férhet hozzá, és az összes többi tag szemét értékkel rendelkezik. Az id értéke nem jelenik meg megfelelően, de az ár értéke megfelelően.
03. ábra: Módosított C program unióval
A fenti program szerint a Book szakszervezet. A könyv1 és a könyv2 unió típusú változók. Először a book1 name értékét rendeli hozzá, és kinyomtatja. Ezután a könyv2 név értéke hozzá van rendelve, és kinyomtatásra kerül. Az összes tag helyesen nyomtat, mert egyszerre csak egy tag van használatban. Az unió tárolásához szükséges memória az unió legnagyobb eleméhez szükséges memória. A fenti programban a névváltozó 20 bájt. Ez nagyobb, mint az ár. Tehát az unió memóriafoglalása 20 bájt.
Mi a hasonlóság a struktúra és az Unió között a C-ben?
- C-ben a Structure és az Union is felhasználó által meghatározott adattípusok.
- C-ben a Structure és az Union is használható különböző adattípusok tárolására ugyanazon a memóriahelyen.
Mi a különbség a struktúra és az Unió között a C-ben?
Struktúra kontra Unió a C |
|
A struktúra egy felhasználó által definiált adattípus C nyelven, amely lehetővé teszi a különböző típusú adatok kombinálását. | Az Union egy felhasználó által definiált adattípus C nyelven, amely lehetővé teszi a különböző típusú adatok kombinálását. |
Kisegítő lehetőségek | |
Egy struktúrában az összes tagja bármikor elérhető. | Egy szakszervezetben egyszerre csak az egyik tagja férhet hozzá, és az összes többi tag szemét értékeket fog tartalmazni. |
Memóriakiosztás | |
A szerkezeti változó tárolásához szükséges memória az összes tag memóriaméretének összege. | Az unióváltozó tárolásához szükséges memória az unió legnagyobb eleméhez szükséges memória. |
Kulcsszó | |
A szerkezet meghatározásához használt kulcsszó a „struct”. | A szakszervezet meghatározására használt kulcsszó a „szakszervezet”. |
Összefoglaló – Struktúra kontra Unió a C
A tömb az azonos típusú adatelemek tárolására szolgál. Néha szükség van különböző típusú adatelemek tárolására ugyanazon a memóriahelyen. A C programozási nyelv struktúrát és egységet biztosít ennek a feladatnak a végrehajtásához. Mindkettő felhasználó által meghatározott adattípus. A szerkezeti változó tárolásához szükséges memória az összes tag memóriaméretének összegzése. Az unióváltozó tárolásához szükséges memória az unió legnagyobb eleméhez szükséges memória. Ez a különbség a szerkezet és az unió között a C-ben.