Introduktion til C Union

Union er en brugerdefineret datatype i c, den giver mulighed for at gemme forskellige dataelementer af forskellige datatyper, der kan gemmes på den samme hukommelsesplacering. Det giver en effektiv måde at udnytte hukommelsen, da der kun er adgang til et medlem af en fagforening på et givet tidspunkt. Størrelsen på en union vil derfor på ethvert tidspunkt være lig med størrelsen på dens største element. Selvom union er som en struktur, er den største forskel, at der i en struktur tildeles en separat hukommelse for hvert medlem af strukturen, mens det i unionen er en delt hukommelse, der svarer til størrelsen på det største medlem.

Syntaks:

En union kan defineres som nedenfor.

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

C Union-medlemmer kan fås ved hjælp af referencen 'UnionReference'. union er et nøgleord.

Eksempel på struktur og union i hukommelsesallokering:

Lad os demonstrere forskellen mellem struktur og union i hukommelsesallokering.

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

Produktion:

Eksempler på C Union

Lad os se gennemførelsen af ​​C Union ved hjælp af eksempler nævnt nedenfor:

Eksempel 1

Dette er eksemplet til at definere en C-union og få adgang til dens medlemmer.

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

Output :

Eksempel 2

Nedenfor er den samme kode som ovenfor bortset fra at udskrivningsangivelserne er omarrangeret.

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

Produktion:

Hvis du ser nøje på output, kan du se, at der er tildelt affaldsværdier til int og float, fordi strengen til sidst blev tildelt hukommelsen, dvs. da medlemmerne deler hukommelsen i en union, vil det medlem, hvis værdi i øjeblikket er gemt, har adgang til hukommelsen.

Eksempel 3

Anonym forening er en forening, der ikke er navngivet, hvorfor de kan bruges i enhver indlejret struktur eller fagforening. Medlemmerne af den anonyme fagforening kan fås direkte adgang inden for rammerne af deres definition. Tilsvarende kan anonym struktur anvendes i en anonym fagforening.

Syntaks af Anonym forening 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;
)

Produktion:

Testchargen er blevet tildelt værdien 'A', fordi den nylige værdi i unionshukommelsen er 65, der blev tildelt testNum, hvorfor det tilsvarende ASCII-tegn udskrives.

Bemærk: Medlemmerne af fagforeningen får adgang 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;
)

Produktion:

Konklusion

Således hjælper fagforeningen med at styre hukommelsen effektivt. Ulempen med fagforeningen er, at kun den sidst indtastede værdi for unionen kun vil være tilgængelig. Det skal bruges, når medlemmer af fagforeningen ikke behøver at være tilgængelige for adgang på samme tid.

Anbefalede artikler

Dette er en guide til C Union. Her diskuterer vi introduktion, syntaks og forskellige eksempler på union med kodeimplementering. Du kan også se på de følgende artikler for at lære mere-

  1. C Nøgleord
  2. Arrays i C-programmering
  3. Palindrome-program i C ++
  4. C Opbevaringsklasser

Kategori: