Introduktion till C Union

Union är en användardefinierad datatyp i c, den gör det möjligt att lagra olika dataelement av olika datatyper som kan lagras på samma minnesplats. Det ger ett effektivt sätt att utnyttja minnet, eftersom endast en medlem av en fackförening kan nås vid en viss tidpunkt. Storleken på en union skulle därför vid någon tidpunkt vara lika stor som storleken på dess största element. Även om unionen är som en struktur, är den största skillnaden att i en struktur tilldelas ett separat minne för varje medlem av strukturen medan det i unionen är ett delat minne som motsvarar storleken på det största medlemmet.

Syntax:

En fackförening kan definieras som nedan.

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

C Union-medlemmarna kan nås med referensen "UnionReference". union är ett nyckelord.

Exempel på struktur och union i minnesallokering:

Låt oss visa skillnaden mellan struktur och union i minnesallokering.

Koda:

#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:

Exempel på C Union

Låt oss se genomförandet av C Union med hjälp av exempel som nämns nedan:

Exempel 1

Detta är exemplet för att definiera en C-fackförening och få åtkomst till dess medlemmar.

Koda:

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

Utgång :

Exempel 2

Nedan visas samma kod som ovan förutom att utskriften har omorganiserats.

Koda:

#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:

Om du tittar noga på utgången kan du se att sopvärden har tilldelats för int och float eftersom strängen tilldelades minnet äntligen, dvs eftersom medlemmarna delar minnet i en union kommer medlemmen vars värde för närvarande är lagrad att har åtkomst till minnet.

Exempel 3

Anonym förening är en fackförening som inte heter, varför de kan användas i alla kapslade strukturer eller fackföreningar. Medlemmarna i den anonyma fackföreningen kan nås direkt inom ramen för deras definition. På liknande sätt kan anonym struktur användas i en anonym fackförening.

Syntax av anonym anslutning och struktur enligt följande:

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

Exempel på anonym strukturförening inom 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:

Testkarret har tilldelats värdet 'A' eftersom det senaste värdet i kopplingsminnet är 65 som tilldelades testNum, varför motsvarande ASCII-tecken skrivs ut.

Obs: Fackföreningens medlemmar har tillgång till direkt.

Exempel på anonym struktur i en fackförening:

#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:

Slutsats

Således hjälper facket att hantera minnet effektivt. Nackdelen med fackföreningen är att endast det sista inmatade värdet för facket bara är tillgängligt. Det bör användas när medlemmarna i facket inte behöver vara tillgängliga för att komma åt samtidigt.

Rekommenderade artiklar

Detta är en guide till C Union. Här diskuterar vi introduktion, syntax och olika exempel på union med kodimplementering. Du kan också titta på följande artiklar för att lära dig mer-

  1. C Nyckelord
  2. Arrays in C-programmering
  3. Palindrome-program i C ++
  4. C Lagringsklasser

Kategori: