Ключова разлика – структура срещу обединение в C
Масивът е структурирана информация, поддържана от езика C. Масивът може да се използва за съхраняване на елементи от данни от същия тип. Ако има израз като int марки [10]; тогава марките са масив, който може да съхранява десет марки и всички те са цели числа. Понякога се изисква съхраняване на елементи от данни от различни типове в едно и също място в паметта. Например служител може да има ID на служител, име, отдел, възраст и т.н. Те са от различни типове данни. Следователно е необходимо да има метод за съхраняване на различни елементи от данни като една единица. Структурите и обединенията в C се използват за съхраняване на елементи от данни от различни типове в едно и също място в паметта. Структурата и обединението са подобни, но се различават главно поради разпределението на паметта. Паметта, необходима за съхраняване на структурна променлива, е сумата от размера на паметта на всички членове. Паметта, необходима за съхраняване на променлива на обединение, е паметта, необходима за най-големия елемент в обединението. Това е ключовата разлика между структура и обединение в C. Тази статия обсъжда разликата между структура и обединение в C.
Какво е структура в C?
Структурата е дефиниран от потребителя тип данни в C. Тя помага да се комбинират елементи от данни от различни типове. Една структура може да представлява записи. Ученикът може да има student_id, student_name и т.н. Вместо да съхранява всяка променлива поотделно, всички тези различни елементи от данни могат да бъдат компактни в една единица с помощта на структура. Дефинира се с помощта на ключовата дума „struct“. В една структура всички нейни членове могат да бъдат достъпни по всяко време. Следното създава структура от производен тип данни Student.
struct Student {
intstudent_id;
char student_name[20];
};
За горната структура, променливите могат да бъдат декларирани както следва.
struct Student student1, student2, student3;
Има два метода за достъп до членовете на структурата. Това е чрез използване на оператор член (.) и оператор на указател на структура (->). Членовете могат да бъдат достъпни с помощта на име_на_променлива_на_структура. име на участник. Ако програмистът иска достъп до името на студент 2, тогава той може да напише израза като printf(student2.student_namename);
Вижте програмата по-долу със структура.

Фигура 01: C програма със структури
Според горната програма, Student е структура. Той съдържа student_id и student_name. В основната програма са декларирани две променливи от структурен тип. Те се наричат student1 и student2. Идентификационният номер на student1 се присвоява със стойност 1, като се използва членският оператор като student1.student_id=1. Името „Ан“е низ. Следователно той се копира в члена student_name с помощта на функцията за копиране на низ strcpy. ID и името се присвояват на student2 по подобен начин. И накрая, тези стойности се отпечатват с помощта на оператор член.
Количеството памет, необходимо за съхраняване на структурна променлива, е сумата от размера на паметта на всички членове. Student_id съдържа 4 байта, а student_name съдържа 20 байта (по един байт за знак). Общите 24 байта са сборът от размера на паметта, изискван от структурата.
Какво е Union в C?
Обединението е дефиниран от потребителя тип данни в C. Той помага да се съхраняват различни типове данни в едно и също място в паметта. Една книга може да има свойства като book_name, цена и т.н. Вместо да се създават променливи за всяка от тях, може да се използва обединение за компактиране на всички различни типове данни в една единица с помощта на обединение. Дефинира се с помощта на ключовата дума ‘union’. Следното създава книга за обединение на извлечени данни.
unionBook{
char име[20];
двойна цена;
};
За горното обединение променливите могат да бъдат декларирани както следва.
съюз Книга книга1, книга2;
Има два метода за достъп до членовете на съюза. Това е чрез използване на оператор член (.) и оператор на указател на структура (->). Членовете могат да бъдат достъпни чрез union_variable_name. име на участник. Ако програмистът иска достъп до името на book1, тогава той може да напише израза като printf(book1.name);
Вижте програмата по-долу със синдикат.

Фигура 02: C програма, използваща обединение
Според горната програма, Книгата е съюз. Книгата1 е променлива от тип union. Името и цената са присвоени стойности. В обединението само един от неговите членове може да бъде достъпен в даден момент и всички останали членове ще имат стойности за боклук. Стойността на id не се отпечатва правилно, но стойността на цената се отпечатва правилно.

Фигура 03: Модифицирана C програма с обединение
Според горната програма Книгата е съюз. Книга1 и книга2 са променливи тип обединение. Първо се присвоява стойността за име на book1 и тя се отпечатва. След това се присвоява стойността за book2 name и тя се отпечатва. Всички членове се отпечатват правилно, защото един член се използва в даден момент. Паметта, необходима за съхраняване на обединение, е паметта, необходима за най-големия елемент на обединението. В горната програма променливата за име е 20 байта. По-голяма е от цената. И така, разпределението на паметта за обединението е 20 байта.
Какви са приликите между структура и съюз в C?
- И структурата, и съюзът в C са дефинирани от потребителя типове данни.
- Както Structure, така и Union в C могат да се използват за съхраняване на различни типове данни в едно и също място в паметта.
Каква е разликата между структура и съюз в C?
Структура срещу обединение в C |
|
Структурата е дефиниран от потребителя тип данни на езика C, който позволява комбинирането на данни от различни типове заедно. | Union е дефиниран от потребителя тип данни на език C, който позволява комбиниране на данни от различни типове заедно. |
Достъпност | |
В една структура всички нейни членове могат да бъдат достъпни по всяко време. | В съюз само един от неговите членове може да бъде достъпен в даден момент и всички останали членове ще съдържат ненужни стойности. |
Разпределяне на памет | |
Паметта, необходима за съхраняване на структурна променлива, е сумата от размера на паметта на всички членове. | Паметта, необходима за съхраняване на обединена променлива, е паметта, необходима за най-големия елемент в обединението. |
Ключова дума | |
Ключовата дума, използвана за дефиниране на структура, е ‘struct’. | Ключовата дума, използвана за дефиниране на обединение, е „съюз“. |
Резюме – Структура срещу обединение в C
Масив се използва за съхраняване на елементи от данни от същия тип. Понякога е необходимо да се съхраняват елементи от данни от различни типове в едно и също място в паметта. Езикът за програмиране C осигурява структура и обединение за изпълнение на тази задача. И двата са дефинирани от потребителя типове данни. Паметта, необходима за съхраняване на структурна променлива, е сумата от размера на паметта на всички членове. Паметта, необходима за съхраняване на променлива на обединение, е паметта, необходима за най-големия елемент в обединението. Това е разликата между структурата и обединението в C.