Úvod do únie Únie

Únia je užívateľom definovaný typ údajov vc, umožňuje ukladať rôzne dátové prvky rôznych typov údajov na rovnaké miesto v pamäti. Poskytuje efektívny spôsob využitia pamäte, pretože v jednom okamihu je prístupný iba k jednému členovi únie. Veľkosť odboru by sa preto v každom okamihu rovnala veľkosti jeho najväčšieho prvku. Hoci spojenie je ako štruktúra, hlavným rozdielom je to, že v štruktúre je každému členu štruktúry pridelená oddelená pamäť, zatiaľ čo v jednotke je to zdieľaná pamäť, ktorá je ekvivalentná veľkosti najväčšieho člena.

syntaxe:

Úniu možno definovať nižšie.

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

Prístup k členom Únie je možný prostredníctvom odkazu „UnionReference“. union je kľúčové slovo.

Príklad štruktúry a spojenia v alokácii pamäte:

Ukážme rozdiel medzi štruktúrou a jednotou v alokácii pamäte.

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ýkon:

Príklady Únie Únie

Pozrime sa na implementáciu Únie Únie pomocou príkladov uvedených nižšie:

Príklad č. 1

Toto je príklad na definovanie únie C a prístup k jej členom.

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 :

Príklad č. 2

Nižšie je uvedený rovnaký kód ako vyššie, okrem toho, že tlačové vyhlásenia boli preusporiadané.

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ýkon:

Ak sa na výstup pozriete pozorne, môžete vidieť, že pre int a float boli priradené hodnoty odpadkov, pretože reťazec bol alokovaný pamäti, tj. Pretože členovia zdieľajú pamäť v odbore, člen, ktorého hodnota je aktuálne uložená mať prístup do pamäte.

Príklad č. 3

Anonymný zväzok je zväzok, ktorý nie je pomenovaný, a preto sa môžu použiť vo vnútri vnorených štruktúr alebo odborov. Členovia anonymnej únie môžu mať priamy prístup v rámci svojej definície. Podobne možno anonymnú štruktúru použiť vo vnútri anonymnej únie.

Syntax anonymnej únie a štruktúry:

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

Príklad anonymného spojenia štruktúr v rámci štruktúry:

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

Testchar má priradenú hodnotu „A“, pretože posledná hodnota v jednotkovej pamäti je 65, ktorá bola priradená testNum, preto sa vytlačí zodpovedajúci znak ASCII.

Poznámka: Členovia únie sú prístupní priamo.

Príklad anonymnej štruktúry v rámci únie:

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

záver

Únia tak pomáha pri efektívnej správe pamäte. Nevýhodou únie je, že bude dostupná iba posledná zadaná hodnota pre odbor. Mal by sa použiť, keď členovia únie nemusia byť prístupní súčasne.

Odporúčané články

Toto je príručka k únii Únie. Tu diskutujeme úvod, syntax a rôzne príklady spojenia s implementáciou kódu. Viac informácií nájdete aj v nasledujúcich článkoch

  1. C Kľúčové slová
  2. Polia v programovaní C
  3. Program palindrómu v C ++
  4. C Triedy úložiska

Kategórie: