C Vakbonden (met voorbeelden)

In deze tutorial leer je over vakbonden in C-programmering. Meer specifiek, hoe u vakbonden opricht, toegang krijgt tot haar leden en de verschillen tussen vakbonden en structuren leert kennen.

Een unie is een door de gebruiker gedefinieerd type dat lijkt op structs in C, met uitzondering van één belangrijk verschil. Structs wijzen voldoende ruimte toe om al hun leden op te slaan, terwijl vakbonden de ruimte toewijzen om alleen het grootste lid op te slaan.

Hoe definieer je een vakbond?

We gebruiken het unionsleutelwoord om vakbonden te definiëren. Hier is een voorbeeld:

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

De bovenstaande code definieert een afgeleid type union car.

Maak vakbondsvariabelen

Wanneer een unie is gedefinieerd, wordt een door de gebruiker gedefinieerd type gemaakt. Er is echter geen geheugen toegewezen. Om geheugen voor een bepaald vakbondstype toe te wijzen en ermee te werken, moeten we variabelen maken.

Hier is hoe we vakbondsvariabelen maken.

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

Een andere manier om vakbondsvariabelen te creëren is:

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

In beide gevallen worden de vakbondsvariabelen auto1, auto2 en een vakbondswijzer auto3 van het union cartype gemaakt.

Toegang tot leden van een vakbond

We gebruiken de .operator om toegang te krijgen tot leden van een vakbond. Om toegang te krijgen tot pointervariabelen, gebruiken we ook de ->operator.

In het bovenstaande voorbeeld

  • Om toegang te krijgen tot de prijs voor car1, car1.pricewordt gebruikt.
  • Om toegang te krijgen tot de prijs met behulp van car3, (*car3).priceof car3->pricekan worden gebruikt.

Verschil tussen vakbonden en structuren

Laten we een voorbeeld nemen om het verschil tussen vakbonden en structuren aan te tonen:

 #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; ) 

Uitvoer

 grootte van unie = 32 grootte van structuur = 40 

Waarom dit verschil in grootte van vakbonds- en structuurvariabelen?

Hier is de grootte van sJob 40 bytes omdat

  • de grootte van name(32)is 32 bytes
  • de grootte van salaryis 4 bytes
  • de grootte van workerNois 4 bytes

De grootte van uJob is echter 32 bytes. Dit komt doordat de grootte van een unievariabele altijd de grootte is van het grootste element. In het bovenstaande voorbeeld is de grootte van het grootste element, ( name(32)), 32 bytes.

Met een vakbond delen alle leden dezelfde herinnering .

Voorbeeld: toegang tot vakbondsleden

 #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; )

Uitvoer

 Salaris = 0,0 Aantal werknemers = 100 

Ga naar Waarom hebben we C-vakbonden nodig om te zien waar vakbonden worden gebruikt?

Interessante artikelen...