Introduksjon til C Union

Union er en brukerdefinert datatype i c, den lar lagring av forskjellige dataelementer av forskjellige datatyper lagres på samme minneplass. Det gir en effektiv måte å utnytte minnet på, ettersom bare ett medlem av en fagforening kan nås på et gitt tidspunkt. Størrelsen på en union vil derfor til enhver tid være lik størrelsen på det største elementet. Selv om forening er som en struktur, er hovedforskjellen at i en struktur tildeles et separert minne for hvert medlem av strukturen, mens det i forbundet er et delt minne som tilsvarer størrelsen på det største medlemmet.

syntaks:

En fagforening kan defineres som nedenfor.

union UnionName
(
UMember1;
UMember2;
UMember3;
) UnionReference;

Du kan få tilgang til C Union-medlemmene ved å bruke referansen 'UnionReference'. union er et nøkkelord.

Eksempel på struktur og forening i minnetildeling:

La oss demonstrere forskjellen mellom struktur og forening i minnetildeling.

Kode:

#include
struct samp_structure
(
char name1(30);
int e_id;
float e_slry;
char name2(60);
)s;
union s_union
(
char name1(30);
int e_id;
float saly;
)u;
int main()
(
printf("size of structure :%ld bytes \n", sizeof(s));
printf("size of union : %ld bytes\n", sizeof(u));
return 0;
)

Produksjon:

Eksempler på C Union

La oss se implementeringen av C Union ved hjelp av eksempler nevnt nedenfor:

Eksempel 1

Dette er eksemplet for å definere en C-union og få tilgang til medlemmene.

Kode:

#include
#include
union test (
int tint;
float tf;
char tstr(20);
);
int main( ) (
union test t;
t.tint = 100;
printf( "record.i : %d\n", t.tint);
t.tf= 200.5;
printf( "record.f : %f\n", t.tf);
strcpy( t.tstr, "Test");
printf( "record.str : %s\n", t.tstr);
return 0;
)

Utgang :

Eksempel 2

Nedenfor er den samme koden som ovenfor, bortsett fra at utskriftsuttalelsene er omorganisert.

Kode:

#include
#include
union test (
int tint;
float tf;
char tstr(20);
);
int main( ) (
union test t;
t.tint = 100;
t.tf = 200.5;
strcpy( t.tstr, "Test");
printf( "record.i : %d\n", t.tint);
printf( "record.f : %f\n", t.tf);
printf( "record.str : %s\n", t.tstr);
return 0;
)

Produksjon:

Hvis du ser på utgangen nøye, kan du se at søppelverdiene er tildelt for int og float fordi strengen tildelte minnet til slutt, dvs. siden medlemmene deler minnet i en fagforening vil medlemmet som verdien for øyeblikket er lagret har tilgang til minnet.

Eksempel 3

Anonym forening er en forening som ikke heter, og derfor kan de brukes i hvilken som helst nestet struktur eller fagforeninger. Medlemmene av den anonyme fagforeningen kan nås direkte innenfor rammen av deres definisjon. Tilsvarende kan anonym struktur brukes i en anonym fagforening.

Syntaks for anonyme foreninger og struktur som følger:

// Anonymous union example
union
(
char anoUChar;
int anoUNum;
);
// Anonymous structure example
struct
(
char anoSChar;
int anoSNum;
);

Eksempel på anonym strukturforening i en struktur:

#include
struct testscope
(
// Anonymous union
union
(
char testChar;
int testNum;
int testNum2;
);
);
int main()
(
struct testscope ts;
ts.testNum = 65;
// Note that members of union are accessed directly
printf("testchar = %c, testnum = %d, testnum2 = %d", ts.testChar, ts.testNum, ts.testNum2);
return 0;
)

Produksjon:

Testkarakteren er tildelt verdien 'A' fordi den siste verdien i foreningsminnet er 65 som ble tilordnet testNum, derav blir det tilsvarende ASCII-tegnet skrevet ut.

Merk: Forbundets medlemmer får tilgang til direkte.

Eksempel på anonym struktur i en fagforening:

#include
union testscope
(
// Anonymous union
struct
(
char testChar;
int testNum;
int testNum2;
);
);
int main()
(
union testscope ts;
ts.testNum = 65;
ts.testChar='V';
//Note: The members of struct are accessed directly
printf("testchar = %c, testnum = %d, testnum2 = %d", ts.testChar, ts.testNum, ts.testNum2);
return 0;
)

Produksjon:

Konklusjon

Dermed hjelper fagforeningen å administrere minnet effektivt. Ulempen med forbundet er at bare den sist oppførte verdien til forbundet bare vil være tilgjengelig. Det bør brukes når medlemmer av forbundet ikke trenger å være tilgjengelige samtidig.

Anbefalte artikler

Dette er en guide til C Union. Her diskuterer vi introduksjon, syntaks og forskjellige eksempler på forbund med kodeimplementering. Du kan også se på følgende artikler for å lære mer-

  1. C nøkkelord
  2. Arrays in C-programmering
  3. Palindrome-program i C ++
  4. C Lagringsklasser