C szakszervezetek (példákkal)

Ebben az oktatóanyagban megismerheti a C programozás szakszervezeteit. Pontosabban, hogyan lehet szakszervezeteket létrehozni, hozzáférni a tagjaihoz és megismerni a szakszervezetek és struktúrák közötti különbségeket.

Az unió egy felhasználó által definiált típus, amely egy kulcskülönbség kivételével hasonló a C-ben lévő struktúrákhoz. A Struktúrák elegendő helyet osztanak ki minden tagjának tárolására, ahol a szakszervezetek csak a legnagyobb tagot tárolják.

Hogyan definiálható az unió?

A unionkulcsszót a szakszervezetek meghatározásához használjuk . Íme egy példa:

 union car ( char name(50); int price; ); 

A fenti kód egy származtatott típust határoz meg union car.

Hozzon létre unióváltozókat

Az unió definiálásakor létrehoz egy felhasználó által definiált típust. Nincs memória. Ahhoz, hogy memóriát rendelhessünk egy adott uniótípushoz, és dolgozzunk vele, változókat kell létrehoznunk.

Így hozhatunk létre unióváltozókat.

 union car ( char name(50); int price; ); int main() ( union car car1, car2, *car3; return 0; ) 

Az unióváltozók létrehozásának másik módja:

 union car ( char name(50); int price; ) car1, car2, *car3; 

Mindkét esetben létrehozzák a car1, car2 és car3 union cartípusú unióváltozókat .

Szakszervezet tagjai

Az .operátort egy szakszervezet tagjainak elérésére használjuk . A mutatóváltozók eléréséhez az ->operátort is használjuk .

A fenti példában

  • Hozzáférési árát car1, car1.pricealkalmazunk.
  • Az ár eléréséhez használja car3a (*car3).pricevagy car3->pricea lehetőséget.

Szakszervezetek és struktúrák közötti különbség

Vegyünk egy példát a szakszervezetek és a struktúrák közötti különbség bemutatására:

 #include union unionJob ( //defining a union char name(32); float salary; int workerNo; ) uJob; struct structJob ( char name(32); float salary; int workerNo; ) sJob; int main() ( printf("size of union = %d bytes", sizeof(uJob)); printf("size of structure = %d bytes", sizeof(sJob)); return 0; ) 

Kimenet

 az unió mérete = 32 a szerkezet mérete = 40 

Miért ez a különbség az unió és a strukturális változók méretében?

Itt az sJob mérete 40 bájt, mert

  • mérete name(32)32 bájt
  • mérete salary4 bájt
  • mérete workerNo4 bájt

Az uJob mérete azonban 32 bájt. Ez azért van, mert az unióváltozó mérete mindig a legnagyobb elemének a mérete lesz. A fenti példában legnagyobb elemének ( name(32)) mérete 32 bájt.

A szakszervezetnél minden tagnak ugyanaz az emlékezete .

Példa: Hozzáférés az uniós tagokhoz

 #include union Job ( float salary; int workerNo; ) j; int main() ( j.salary = 12.3; // when j.workerNo is assigned a value, // j.salary will no longer hold 12.3 j.workerNo = 100; printf("Salary = %.1f", j.salary); printf("Number of workers = %d", j.workerNo); return 0; )

Kimenet

 Fizetés = 0,0 Dolgozók száma = 100 

Ha meg szeretné tudni, hogy hol használják a szakszervezeteket, keresse fel a Miért van szükség C szakszervezetekre oldalunkat

érdekes cikkek...