C fagforeninger (med eksempler)

I denne vejledning lærer du om fagforeninger i C-programmering. Mere specifikt, hvordan man opretter fagforeninger, får adgang til dets medlemmer og lærer forskellene mellem fagforeninger og strukturer.

En union er en brugerdefineret type svarende til strukturer i C bortset fra en nøgleforskel. Structs tildeler plads nok til at gemme alle dets medlemmer, hvor fagforeninger afsætter plads til kun at opbevare det største medlem.

Hvordan defineres en union?

Vi bruger unionnøgleordet til at definere fagforeninger. Her er et eksempel:

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

Ovenstående kode definerer en afledt type union car.

Opret fagvariabler

Når en union er defineret, opretter den en brugerdefineret type. Der tildeles imidlertid ingen hukommelse. For at tildele hukommelse til en given unionstype og arbejde med den er vi nødt til at oprette variabler.

Sådan opretter vi foreningsvariabler.

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

En anden måde at skabe unionsvariabler på er:

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

I begge tilfælde oprettes foreningsvariablerne car1, car2 og en unionsmarkør car3 af union cartypen.

Få adgang til medlemmer af en fagforening

Vi bruger .operatøren til at få adgang til medlemmer af en fagforening. For at få adgang til markørvariabler bruger vi også ->operatøren.

I ovenstående eksempel

  • For at få adgang til pris for car1, car1.pricebruges.
  • For at få adgang til pris ved hjælp af car3en af (*car3).priceeller car3->pricekan bruges.

Forskel mellem fagforeninger og strukturer

Lad os tage et eksempel for at demonstrere forskellen mellem fagforeninger og strukturer:

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

Produktion

 størrelse af union = 32 størrelse af struktur = 40 

Hvorfor denne forskel i størrelsen af ​​union og struktur variabler?

Her er størrelsen på sJob 40 bytes, fordi

  • størrelsen name(32)er 32 byte
  • størrelsen salaryer 4 byte
  • størrelsen workerNoer 4 byte

Størrelsen på uJob er dog 32 byte. Det skyldes, at størrelsen på en unionsvariabel altid vil være størrelsen på dens største element. I ovenstående eksempel er størrelsen på dets største element ( name(32)) 32 byte.

Med en fagforening deler alle medlemmer den samme hukommelse .

Eksempel: Adgang til EU-medlemmer

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

Produktion

 Løn = 0,0 Antal arbejdere = 100 

For at lære, hvor fagforeninger bruges, skal du besøge Hvorfor har vi brug for C-fagforeninger?

Interessante artikler...