Egy tömb olyan adat, amelyet a C nyelv támogat. Egy tömb felhasználható azonos típusú adatelemek tárolására. Ha van egy int int jelölés [10]; akkor a jelek egy tömb, amely tíz jelet képes tárolni, és mindegyik egész szám. Időnként különféle típusú adatelemeket kell tárolni ugyanabban a memóriahelyben. Például egy alkalmazottnak lehet alkalmazottai azonosítója, neve, osztálya, életkora stb. Különböző adattípusok vannak. Ezért szükséges olyan módszer, amely a különféle adatelemeket egyetlen egységként tárolja. A C struktúrák és uniók különféle típusú adatelemek tárolására szolgálnak ugyanabban a memóriahelyen. A struktúra és az unió hasonlóak, de elsősorban a memóriaelosztá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ória mé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 az a legfontosabb különbség Ez a cikk a szerkezet és az unió közötti különbséget tárgyalja C-ben.
1. Áttekintés és a legfontosabb különbség
2. Mi a szerkezet a C-ben?
3. Mi az unió a C-ban?
4. A szerkezet és az unió hasonlóságai C
5. Összehasonlítás egymással - Szerkezet vs Unió táblázatos formában
6. Összegzés
A struktúra a felhasználó által meghatározott adattípus a C-ben. Segít a különféle típusú adatelemek kombinálásában. Egy struktúra reprezentálhatja a rekordokat. A diákoknak lehet studen_id, student_name stb. Ahelyett, hogy az egyes változókat külön-külön tárolnák, ezek a különféle adatelemek egy struktúrával összevonhatók egyetlen egységbe. Ez az 'struct' kulcsszóval kerül meghatározásra. Egy struktúrában az összes tagja bármikor hozzáférhető. Az alábbiakkal létrehozunk egy származtatott adattípust, a struct Student-ot.
struct Student
intstudent_id;
char student_name [20];
;
A fenti szerkezethez a változók az alábbiak szerint adhatók be.
struct Diák 1. hallgató, 2. hallgató, 3. hallgató;
Kétféle módszer érhető el a struktúra tagjainak eléréséhez. Ez a tag operátor (.) És a struktúra-mutató operátor (->) használatával történik. A tagok a struktúra_változtatható_neve segítségével érhetők el. tag név. Ha a programozó hozzáférni akarja a 2. hallgató nevét, akkor az állítást printf formában írhatja (student2.student_namename);
Lásd az alábbi programot egy struktúrával.
01. ábra: C program szerkezetekkel
A fenti program szerint a Student egy struktúra. Ez tartalmazza a student_id és a student_name nevet. A szerkezet típusának két változóját deklarálják a főprogramban. Őket nevezik student1 és student2. A student1 azonosítóját 1-es értékkel rendelik meg, a tag operátor használatával, mint student1.student_id = 1. Az „Ann” név egy karakterlánc. Ezért a strcpy karakterlánc másolás funkcióval másolja a student_name tagjára. Az azonosítót és a nevet a Student2-hez hasonló módon kell hozzárendelni. Végül ezeket az értékeket a tag operátor segítségével nyomtatják ki.
A szerkezeti változó tárolásához szükséges memória mennyisége az összes tag memória méretének összege. A student_id 4 bájtot tartalmaz, a student_name pedig 20 bájtot tartalmaz (mindegyik egy bájt egy karakternél). A teljes 24 bájt a szerkezet által igényelt memória méretének összege.
Az unió a felhasználó által meghatározott adattípus a C-ben. Segít tárolni a különböző adattípusokat ugyanabban a memóriahelyben. A könyvnek tulajdonságai lehetnek, például könyvnév, ár stb. Ahelyett, hogy mindegyikre változókat hozna létre, az unió felhasználható az összes különféle adattípus egyesítésére egy egységbe egy unió segítségével. Ezt az 'union' kulcsszóval definiálják. Az alábbiakban egy származtatott adat-unió könyvet hozunk létre.
unionBook
char név [20];
dupla ár;
;
A fenti unió esetében a változók a következők szerint deklarálhatók.
szakszervezeti könyv könyv1, könyv2;
Kétféle módszer érhető el az unió tagjainak eléréséhez. Ez a tag operátor (.) És a struktúra-mutató operátor (->) használatával történik. A tagok az union_variable_name segítségével érhetők el. tag név. Ha a programozó hozzáférni akar a könyv1 nevéhez, akkor az állítást printf (könyv1.név) formában írhatja;
Nézze meg az alábbi programot szakszervezettel.
02 ábra: C program unió használatával
A fenti program szerint a könyv unió. A book1 egy változó típusú unió. A név és az ár hozzárendelt értékek. Az unióban csak egy tagja férhet hozzá egyszerre, és minden más tagnak szemétértékei vannak. Az id érték nem nyomtatódik ki megfelelően, de az árérték nyomtatása megfelelő.
03. ábra: Módosított C program unióval
A fenti program szerint a Book unió. A book1 és a book2 unió típusú változók. Először hozzárendeljük a book1 név értékét és kinyomtatjuk. Ezután a book2 név értékét hozzárendeljük és kinyomtatjuk. Az összes tag helyesen nyomtat, mert egyszerre csak egy tagot használ. 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óriaelosztása 20 bájt.
Szerkezet vs Unió C-ben | |
A struktúra egy felhasználó által meghatározott adattípus C nyelven, amely lehetővé teszi a különféle típusú adatok kombinálását. | Az Union egy felhasználó által meghatározott adattípus C nyelven, amely lehetővé teszi a különféle típusú adatok kombinálását. |
Megközelíthetőség | |
Egy struktúrában minden tagja bármikor hozzáférhető. | Egy unióban csak egy tagja férhet hozzá egyszerre, és minden más tagnak hulladékértékeket kell tartalmaznia. |
Memória allokáció | |
A szerkezeti változó tárolásához szükséges memória az összes tag memória mé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. |
Kulcsszó | |
A struktúra meghatározásához használt kulcsszó: 'struct'. | Az unió meghatározásához használt kulcsszó az „unió”. |
Egy tömböt használnak az azonos típusú adatelemek tárolására. Időnként különféle típusú adatelemeket kell tárolni ugyanabban a memóriahelyben. A C programozási nyelv felépítést és egységet biztosít e feladat 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ória mé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 C-ben.
1.Point, oktatóanyagok. „Structures in C.”, Tutorials Point, 2017. augusztus 15. Elérhető itt
2.Pont, oktatóanyagok. „C szakszervezetek” , Tutorials Point, 2017. augusztus 15. Elérhető itt