Fagforeninger i ca

Fagforeninger i ca

“Akkurat som strukturer er fagforeninger også brukerdefinerte datatyper, men i motsetning til strukturer, deler fagforeningsmedlemmer samme minneplassering, og de har ikke forskjellige minneplasser. Hvis vi erklærer to variabler i en struktur og deretter sjekker adressen deres, vil vi se at begge har forskjellige adresser, noe som betyr at medlemmer av en struktur får forskjellige minneplasser. I stedet for det, erklærer vi de samme to variablene i en union og sjekker adressene deres; Det vil bli observert at begge adressene deres er de samme, noe som beviser at begge konstantene har samme minneplassering. Når det gjelder strukturen, vil et heltall ta fire blokker, men i en union vil både heltallet og karakteren dele den samme minneblokken.

En ting å huske på er at i en union vil medlemmene dele samme sted for minnet, noe som betyr at hvis det også gjøres endringer i ett medlem, vil de gjenspeiles i de andre medlemmene i unionen. Unionens størrelse er tatt i henhold til størrelsen på det største medlemmet av en fagforening. Unionens medlemmer kan nås via pekere ved å bruke (->) operatøren. Hvis vi ønsker å lagre informasjon om flere objekter som bøker og butikker, må vi lage to strukturer for hver av dem. Det vil kaste bort mye minne. For det formålet brukes fagforeninger. Fagforeninger kan lagre informasjon på flere objekter.”

Syntaks

Syntaksen for å erklære en union er som følger:

Syntaksen for fagforeninger og struktur er nesten den samme. Forskjellen mellom union og struktur er at vi bruker nøkkelordforbundet i stedet for struktur for å erklære fagforeninger. I variablene kan vi se at vi har erklært flere variabler av forskjellige datatyper. Dette er det samme som strukturer, men i strukturer kan disse variablene bare være relatert til et enkelt objekt, som bok eller en student eller en klasse osv. Men i fagforeninger kan vi erklære variabler som er relevante for mer enn et enkelt objekt. For eksempel kan vi erklære lengden på et bord og også tittelen på boken på bordet.

Eksempel 1

I dette eksemplet har vi opprettet en fagforening og gitt det navnet "Test_union". I variablene -blokken har vi erklært to variabler som medlemmer av vår forening. Heltall “x” og karakter “y”. Med den avsluttende braketten er det en variabel av typen Union “Test_Union.”Vi kan også erklære en variabel av unionstypen det samme som i strukturer. Ved hjelp av "Variable1" kan vi få tilgang til medlemmene i vår fagforening. Inne i hovedfunksjonen (), ved bruk av prikkoperatøren, kan vi få tilgang til variablene som er erklært i union. Her tildeler vi verdien “75” til “x.”Merk at vi ikke har tildelt noen verdi til vår" y ”-variabel.

#inkludere
Union Test_Union

int x;
char y;
variabel1;
int main ()

variabel1.x = 75;
printf ("x = %d \ n", variabel1.x);
printf ("y = %c \ n", variabel1.y);
retur 0;

Etter at koden vår er utført, vil vi få utdataene som vises på figuren nedenfor. Vi trykket “X” og dens verdi på samme måte; Vi trykket “y” og dens verdi mot den. Det som skal varsles er at vi ikke tildelte noen verdi til y. I vår output kan vi se at kompilatoren har skrevet ut “X” og en verdi av “75” mot den. Men mot “y”, har den skrevet ut “k.”Du lurer kanskje på hvorfor vi har fått denne kapitalen“ k ”som produksjon for“ y.”Verdi“ 75 ”for“ X ”er ikke noe problem. Men "y" er et tegn som kompilatoren trykket på verdien på selv da vi ga et nummer til “x.”

Dette er fordi, som vi diskuterte tidligere, den samme minneblokken deles av medlemmene som er gruppert i en fagforening. Vi erklærte “variabel1” for vår fagforening og passerte verdien ved å bruke den variabelen. Variabel1 tildelte verdien 75 til alle medlemmene i unionen. Int tok den verdien som et tall og skrev ut samme verdi. Men karakteren tok den verdien som ASCII -kode og konverterte den ASCII -koden til tegnet mot den. ASCII Code for Capital “K” er “75”, så den erstattet “75” med “K.”Dette er hele prosessen med union som tildeler den samme minneblokken til variablene i den.

Eksempel 2

I dette tilfellet vil vi finne ut hvordan unionen bruker minne. For det formålet har vi erklært en fagforening som eksempel_union. I eksempel_union har vi erklært fire konstanter og hver med forskjellige datatyper. Vi har erklært int var1, char var2, double var3 og float var4 som medlemmene i vår fagforening. I hovedmetoden har vi skrevet ut en uttalelse med funksjonsstørrelsen () i den. Funksjonsstørrelse av () er en standardfunksjon på C -språk som får størrelsen på ethvert objekt i koden vår. Vi har gitt det navnet på vår fagforening fordi vi ønsker å få størrelsen vår forening har okkupert.

#inkludere
Union Eksempel_union

int var1;
char var2;
dobbel var3;
float var4;
;
int main ()

printf ("%ld \ n", sizeof (union Exploy_union));
retur 0;

Dette er utdataene etter samlingen av koden vår. Vi får produksjonen på 8. I systemet mitt er heltallets størrelse 4 byte, størrelsen på tegnet er 1 byte, størrelsen på en dobbel er 8 byte, og størrelsen på en flottør er igjen 4 byte. I vårt tilfelle er størrelsen på en dobbel 8, som er den største av alle størrelser, så kompilatoren har tildelt størrelsen 8 til vår fagforening. Nå kan vi få en bedre forståelse av at størrelsen på den høyeste variabelen er tildelt alle datatypene, og summen av størrelsene deres brukes ikke av kompilatoren som for strukturen. Det er grunnen til at vi får resultatet 8 som produksjon.

Konklusjon

I denne guiden diskuterte vi fagforeninger på C -språk. Bare for å forstå begrepet fagforeninger, kan man si at fagforeninger er nesten de samme som strukturer. Men den største forskjellen er minnetildeling. Det er veldig effektivt når du skriver kompleks kode fordi en programmerer på den tiden fokuserer på effektiviteten til koden. En god programmerer prøver alltid å okkupere det minste minnet om systemet med koden; Fagforeningene hjelper dem å gjøre det. Vi leverte vårt beste for å hjelpe deg med å få en forståelse av fagforeninger ved å implementere og forklare eksempler. På slutten av emnet kan vi si at bruk. Det vil også hjelpe koderen til å optimalisere koden for bedre ytelse.