Вступ до C Союзу

Union - це визначений користувачем тип даних в c, він дозволяє зберігати різні елементи даних різних типів даних, які можуть зберігатися в одному і тому ж місці пам'яті. Це забезпечує ефективний спосіб використання пам'яті, оскільки лише один член спілки може отримати доступ у будь-який момент часу. Отже, розмір об'єднання в будь-який момент часу був би рівним розміру його найбільшого елемента. Хоча об'єднання схоже на структуру, головна відмінність полягає в тому, що в структурі виділяється окрема пам'ять для кожного члена структури, тоді як в об'єднанні це спільна пам'ять, що еквівалентна розміру найбільшого члена.

Синтаксис:

Об'єднання можна визначити як нижче.

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

Доступ до членів Союзу C можна отримати за допомогою посилання "UnionReference". union - ключове слово.

Приклад структури та об'єднання в розподілі пам'яті:

Покажемо різницю між структурою та об'єднанням у розподілі пам'яті.

Код:

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

Вихід:

Приклади C Union

Давайте подивимось на реалізацію C Union за допомогою наведених нижче прикладів:

Приклад №1

Це приклад для визначення об'єднання C та доступу до його членів.

Код:

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

Вихід :

Приклад №2

Нижче той самий код, що і вище, за винятком того, що оператори друку були переставлені.

Код:

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

Вихід:

Якщо уважно подивитись на вихід, ви можете побачити, що значення сміття були призначені для int та float, тому що рядок було виділено пам'ять, нарешті, тобто, оскільки члени ділять пам'ять у об'єднанні, член, значення якого наразі зберігається, буде мати доступ до пам'яті.

Приклад №3

Анонімний союз - це союз, який не названий, тому їх можна використовувати всередині будь-якої вкладеної структури чи об'єднання. До членів анонімного союзу можна отримати прямий доступ у межах їх визначення. Аналогічно, анонімна структура може використовуватися всередині анонімного союзу.

Синтаксис анонімного об'єднання та структури наступним чином:

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

Приклад об'єднання анонімного структури всередині структури:

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

Вихід:

Тестовому заряднику було присвоєно значення "A", оскільки недавнє значення в пам'яті об'єднання становить 65, яке було призначено для testNum, отже, друкується відповідний символ ASCII.

Примітка: До членів спілки звертаються безпосередньо.

Приклад анонімної структури всередині союзу:

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

Вихід:

Висновок

Таким чином, об'єднання допомагає ефективно керувати пам’яттю. Недолік об'єднання полягає в тому, що доступне лише останнє введене значення для об'єднання. Він повинен використовуватися, коли членам профспілки не потрібно мати доступ до них одночасно.

Рекомендовані статті

Це посібник із C Union. Тут ми обговорюємо вступ, синтаксис та різні приклади об'єднання c з реалізацією коду. Ви також можете переглянути наступні статті, щоб дізнатися більше -

  1. C Ключові слова
  2. Масиви в програмуванні на С
  3. Програма Palindrome на C ++
  4. C Класи зберігання