Úvod do unie C

Unie je uživatelem definovaný datový typ in c, umožňuje ukládání různých datových prvků různých datových typů do stejného paměťového místa. Poskytuje efektivní způsob využití paměti, protože v kterémkoli okamžiku je přístupný pouze k jednomu členu unie. Velikost unie by proto v kterémkoli okamžiku byla stejná jako velikost jejího největšího prvku. Ačkoli spojení je jako struktura, hlavní rozdíl je v tom, že ve struktuře je každému členu struktury přidělena oddělená paměť, zatímco v unii je to sdílená paměť, která odpovídá velikosti největšího člena.

Syntax:

Spojení lze definovat níže.

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

K členům Unie C lze získat přístup pomocí odkazu „UnionReference“. unie je klíčové slovo.

Příklad struktury a spojení v alokaci paměti:

Ukážeme rozdíl mezi strukturou a jednotou v alokaci paměti.

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

Výstup:

Příklady C unie

Podívejme se na implementaci unie C pomocí příkladů uvedených níže:

Příklad č. 1

Toto je příklad, jak definovat unii C a získat přístup ke svým členům.

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

Výstup :

Příklad č. 2

Níže je stejný kód jako výše, kromě toho, že tiskové příkazy byly přeskupeny.

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

Výstup:

Pokud se podíváte na výstup opatrně, můžete vidět, že pro int a float byly přiřazeny hodnoty odpadků, protože řetězec byl přidělen paměti, tj. Od té doby, co členové sdílejí paměť v odboru, člen, jehož hodnota je aktuálně uložena, mít přístup do paměti.

Příklad č. 3

Anonymní unie je unie, která není pojmenována, proto ji lze použít v jakékoli vnořené struktuře nebo odborech. K členům anonymního svazu lze přímo přistupovat v rámci jejich definice. Podobně lze Anonymní strukturu použít uvnitř anonymního spojení.

Syntaxe anonymního spojení a struktury takto:

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

Příklad anonymního spojení struktur uvnitř struktury:

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

Výstup:

Testchar byla přiřazena hodnota „A“, protože poslední hodnota v unijní paměti je 65, která byla přiřazena testNum, proto je vytištěn odpovídající znak ASCII.

Poznámka: Členové unie jsou přístupní přímo.

Příklad anonymní struktury uvnitř odboru:

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

Výstup:

Závěr

Spojení tak pomáhá při efektivní správě paměti. Nevýhodou svazku je, že bude k dispozici pouze poslední zadaná hodnota pro svazek. Měl by se použít, když členové svazu nemusí být přístupní současně.

Doporučené články

Toto je průvodce C Union. Zde diskutujeme úvod, syntaxi a různé příklady spojení s implementací kódu. Další informace naleznete také v následujících článcích

  1. C Klíčová slova
  2. Pole v programování v C
  3. Program Palindrome v C ++
  4. C Třídy úložiště

Kategorie: