Introducere în C Union

Union este un tip de date definit în utilizator în c, permite stocarea diferitelor elemente de date de diferite tipuri de date pentru a fi stocate în aceeași locație de memorie. Acesta oferă un mod eficient de utilizare a memoriei, deoarece un singur membru al unui sindicat poate fi accesat la un moment dat. Prin urmare, dimensiunea unei uniuni ar fi egală cu dimensiunea celui mai mare element al acesteia. Deși unirea este ca o structură, principala diferență este că într-o structură este alocată o memorie separată pentru fiecare membru al structurii, în timp ce în uniune este o memorie partajată care este echivalentă cu dimensiunea celui mai mare membru.

Sintaxă:

O uniune poate fi definită ca mai jos.

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

Membrii Uniunii C pot fi accesați folosind referința „UnionReference”. uniunea este un cuvânt cheie.

Exemplu de structură și unire în alocarea memoriei:

Să arătăm diferența dintre struct și unire în alocarea memoriei.

Cod:

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

ieşire:

Exemple de C Union

Să vedem punerea în aplicare a C Union cu ajutorul exemplelor menționate mai jos:

Exemplul # 1

Acesta este exemplul pentru a defini o uniune C și accesarea membrilor săi.

Cod:

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

Rezultat :

Exemplul # 2

Mai jos se află același cod ca mai sus, cu excepția faptului că instrucțiunile de tipărire au fost rearanjate.

Cod:

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

ieşire:

Dacă priviți cu atenție ieșirea, puteți vedea că valorile de gunoi au fost alocate pentru int și float, deoarece în sfârșit s-a alocat șirului de memorie, adică din moment ce membrii împărtășesc memoria într-o uniune a cărei valoare este în prezent stocată au acces la memorie.

Exemplul # 3

Uniunea anonimă este o uniune care nu este numită, de aceea pot fi folosite în orice structură sau uniuni cuiburi. Membrii uniunii anonime pot fi accesați direct în cadrul definiției lor. În mod similar, structura anonimă poate fi utilizată în interiorul unei uniuni anonime.

Sintaxa uniunii și structurii anonime după cum urmează:

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

Exemplu de uniune de structuri anonime în cadrul unei structuri:

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

ieşire:

La testchar i s-a atribuit valoarea „A”, deoarece valoarea recentă în memoria unirii este 65 care a fost atribuită testNum, de unde este tipărit caracterul ASCII corespunzător.

Notă: Membrii sindicatului sunt accesați direct.

Exemplu de structură anonimă în interiorul unei uniuni:

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

ieşire:

Concluzie

Astfel, uniunea ajută la gestionarea eficientă a memoriei. Dezavantajul uniunii este că doar ultima valoare introdusă pentru uniune va fi disponibilă doar. Ar trebui să fie utilizat atunci când membrii sindicatului nu trebuie să fie disponibili pentru a fi accesați în același timp.

Articole recomandate

Acesta este un ghid pentru C Union. Aici discutăm introducerea, sintaxa și diferite exemple de unire c cu implementarea codului. De asemenea, puteți consulta următoarele articole pentru a afla mai multe-

  1. C Cuvinte cheie
  2. Arătări în programarea C
  3. Program Palindrome în C ++
  4. C clase de stocare