Inleiding tot C Union

Union is een door de gebruiker gedefinieerd gegevenstype in c, waarmee verschillende gegevenselementen van verschillende gegevenstypen op dezelfde geheugenlocatie kunnen worden opgeslagen. Het biedt een efficiënte manier om het geheugen te gebruiken, omdat op elk gegeven moment slechts één lid van een unie kan worden benaderd. De grootte van een vakbond zou daarom op enig moment gelijk zijn aan de grootte van zijn grootste element. Hoewel de unie als een structuur is, is het belangrijkste verschil dat in een structuur een gescheiden geheugen wordt toegewezen voor elk lid van de structuur, terwijl het in de unie een gedeeld geheugen is dat equivalent is aan de grootte van het grootste lid.

Syntaxis:

Een unie kan worden gedefinieerd zoals hieronder.

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

De C Union-leden zijn toegankelijk met behulp van de referentie 'UnionReference'. unie is een sleutelwoord.

Voorbeeld van struct en unie in geheugentoewijzing:

Laten we het verschil aantonen tussen struct en unie in geheugentoewijzing.

Code:

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

Output:

Voorbeelden van C Union

Laten we de implementatie van C Union bekijken aan de hand van onderstaande voorbeelden:

Voorbeeld 1

Dit is het voorbeeld om een ​​C-unie te definiëren en toegang te krijgen tot haar leden.

Code:

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

Uitgang :

Voorbeeld 2

Hieronder staat dezelfde code als hierboven, behalve dat de afdrukafschriften zijn herschikt.

Code:

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

Output:

Als je de uitvoer aandachtig bekijkt, kun je zien dat er afvalwaarden zijn toegewezen voor int en float omdat de string eindelijk het geheugen is toegewezen, dat wil zeggen omdat de leden het geheugen delen in een unie waarvan het lid waarvan de waarde momenteel is opgeslagen, toegang hebben tot het geheugen.

Voorbeeld 3

Anonieme unie is een unie zonder naam, vandaar dat ze kunnen worden gebruikt binnen elke geneste structuur of unies. De leden van de anonieme unie zijn rechtstreeks toegankelijk binnen het kader van hun definitie. Evenzo kan Anonieme structuur worden gebruikt binnen een anonieme unie.

Syntaxis van anonieme unie en structuur als volgt:

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

Voorbeeld van een anonieme struct-unie binnen een struct:

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

Output:

Aan de testchar is de waarde 'A' toegewezen omdat de recente waarde in het uniegeheugen 65 is die is toegewezen aan testNum. Daarom wordt het bijbehorende ASCII-teken afgedrukt.

Opmerking: de leden van de vakbond hebben rechtstreeks toegang.

Voorbeeld van anonieme struct binnen een unie:

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

Output:

Conclusie

Zo helpt de unie bij het efficiënt beheren van geheugen. Het nadeel van de unie is dat alleen de laatst ingevoerde waarde voor de unie alleen beschikbaar zal zijn. Het moet worden gebruikt wanneer leden van de vakbond niet beschikbaar hoeven te zijn om tegelijkertijd toegang te krijgen.

Aanbevolen artikelen

Dit is een gids voor C Union. Hier bespreken we de introductie, syntaxis en verschillende voorbeelden van c union met code-implementatie. U kunt ook de volgende artikelen bekijken voor meer informatie-

  1. C Trefwoorden
  2. Arrays in C-programmering
  3. Palindrome-programma in C ++
  4. C Opslagklassen