Bevezetés a C Unióba

Az Union a felhasználó által megadott adattípus, ac-ben, lehetővé teszi a különböző adattípusok különböző adatelemeinek tárolását ugyanazon a memóriahelyen. Ez a memória felhasználásának hatékony módja, mivel az uniónak csak egy tagja férhet hozzá egy adott időpontban. Egy unió mérete tehát bármikor megegyezik a legnagyobb elemével. Bár az unió olyan, mint egy struktúra, a fő különbség az, hogy egy struktúrában külön memória van külön-külön a szerkezet minden tagjának, míg az unióban ez egy megosztott memória, amely megegyezik a legnagyobb tag méretével.

Szintaxis:

Az uniót az alábbiak szerint lehet meghatározni.

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

A C Union tagjai az 'UnionReference' hivatkozással érhetők el. az unió egy kulcsszó.

Példa struktúrára és unióra a memóriaelosztásban:

Mutassuk meg a memória allokáció struktúrája és egyesülése közötti különbséget.

Kód:

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

Kimenet:

Példák a C unióra

Nézzük meg a C Union megvalósítását az alább említett példák segítségével:

1. példa

Ez a példa a C unió meghatározására és a tagokhoz való hozzáférésre.

Kód:

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

Teljesítmény :

2. példa

Az alábbiakban ugyanaz a kód található, mint a fenti, azzal a különbséggel, hogy a nyomtatási nyilatkozatokat átrendezték.

Kód:

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

Kimenet:

Ha alaposan megvizsgálja a kimenetet, láthatja, hogy az int és a float szemétértékeket adtak hozzá, mert a karakterláncnak végre volt a memóriája, azaz mivel a tagok megosztják a memóriát egy unióban, akkor az a tag, amelynek az értéke jelenleg tárolódik, hozzáférjenek a memóriához.

3. példa

Az anonim unió olyan unió, amelyet nem kapnak elnevezéssel, ezért felhasználhatók bármilyen beágyazott struktúrában vagy unióban. Az anonim szakszervezet tagjai közvetlenül hozzáférhetők definíciójuk keretein belül. Hasonlóképpen, az Anonim struktúra használható anonim unión belül.

Az Anonim unió és szerkezete szintaxisa:

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

Példa anonim struktúra unióra egy struktúrán belül:

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

Kimenet:

A tesztcsatorna „A” értéket kapott, mert az uniómemóriában a legutóbbi érték 65, amelyet a testNum-hoz rendeltünk, ezért a megfelelő ASCII karakter kinyomtatásra kerül.

Megjegyzés: Az unió tagjai közvetlenül hozzáférhetők.

Példa anonim struktúrára egy unión belül:

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

Kimenet:

Következtetés

Így az unió segít a memória hatékony kezelésében. Az unió hátránya, hogy csak az unióhoz utoljára megadott érték lesz elérhető. Ezt akkor kell használni, ha az unió tagjainak nem szükséges, hogy egyszerre férjenek hozzá.

Ajánlott cikkek

Ez egy útmutató a C Union számára. Itt tárgyaljuk a c unió bevezetését, szintaxisát és a kód megvalósításának különféle példáit. A következő cikkeket is megnézheti további információkért -

  1. C Kulcsszavak
  2. Tömbök a C programozásban
  3. Palindrome program C ++ formátumban
  4. C Tárolási osztályok

Kategória: