Масивът е структурирана информация, поддържана от език C. Масив може да се използва за съхраняване на елементи от същия тип. Ако има изявление като int марки [10]; тогава знаците са масив, който може да съхранява десет марки и всички те са цели числа. Понякога се изисква да съхранявате елементи от данни от различни видове в едно и също място в паметта. Например служителят може да има идентификационен номер на служителя, име, отдел, възраст и т.н. Те са от различни типове данни. Следователно е необходимо да има метод за съхраняване на различни елементи от данни като едно цяло. Структурите и обединенията в C се използват за съхранение на данни от различни типове в едно и също място в паметта. Структурата и обединението са подобни, но главно се различават поради разпределението на паметта. Паметта, необходима за съхраняване на структурна променлива, е сумирането на размера на паметта на всички членове. Паметта, необходима за съхраняване на променлива на обединението, е паметта, необходима за най-големия елемент в обединението. Това е ключовата разлика между структура и съюз в В. Тази статия обсъжда разликата между структура и съюз в С.
1. Преглед и ключова разлика
2. Какво е структура в С
3. Какво е Съюз в С
4. Прилики между структурата и обединението в С
5. Паралелно сравнение - Структура срещу Съюз в С в таблична форма
6. Резюме
Структурата е определен от потребителя тип данни в C. Тя помага за комбиниране на елементи от данни от различни типове. Структурата може да представлява записи. Студентът може да има Student_id, Student_name и т.н. Вместо да съхранява всяка променлива поотделно, всички тези различни данни могат да бъдат компактни в едно цяло с помощта на структура. Тя се дефинира с помощта на ключовата дума „struct“. В една структура, всички нейни членове могат да бъдат достъпни по всяко време. Следното създава производна структура на данните Student.
Структура Студент
intstudent_id;
char student_name [20];
;
За горната структура променливите могат да бъдат декларирани, както следва.
структура Студентски студент1, студент2, студент3;
Има два метода за достъп до членовете на структурата. Това е с помощта на оператора-член (.) И структура на указател на структура (->). Членовете могат да бъдат достъпни с помощта на структура_именна_име. име на участник. Ако програмистът иска достъп до името на студента 2, тогава той може да напише изявлението като printf (student2.student_namename);
Вижте по-долу програмата със структура.
Фигура 01: C програма със структури
Според горната програма Студентът е структура. Съдържа student_id и име на студент. Две променливи от структурен тип са декларирани в основната програма. Те се наричат student1 и student2. Идентификаторът на student1 се присвоява със стойност 1, като се използва операторът член като student1.student_id = 1. Името „Ann“ е низ. Следователно, той се копира в члена_именник с помощта на функция за копиране на стринг strcpy. Идентификационният номер и името се присвояват на student2 по подобен начин. И накрая, тези стойности се отпечатват с помощта на оператор-член.
Количеството памет, необходимо за съхраняване на структурна променлива, е сумата от размера на паметта на всички членове. Student_id съдържа 4 байта, а името на студента съдържа 20 байта (по един байт за знак). Общите 24 байта са сумата от размера на паметта, изисквана от структурата.
Съюзът е определен от потребителя тип данни в C. Той помага да се съхраняват различни типове данни в едно и също място в паметта. Книгата може да има свойства като име на книга, цена и т.н. Вместо да създава променливи за всеки от тях, съюз може да се използва за компактиране на всички различни типове данни в едно устройство с помощта на съюз. Дефинира се с помощта на ключовата дума 'union'. Следното създава производна книга за обединяване на данни.
unionBook
име на чар [20];
двойна цена;
;
За горния съюз променливите могат да бъдат декларирани по следния начин.
съюз книга Book1, book2;
Има два метода за достъп до членовете на съюза. Това е с помощта на оператора-член (.) И структура на указател на структура (->). Достъпът до членовете може да бъде използван с име на union_variable_name. име на участник. Ако програмистът иска достъп до името на book1, тогава той може да напише изявлението като printf (book1.name);
Обърнете се към програмата по-долу със съюз.
Фигура 02: C програма, използваща съюз
Според горната програма Книгата е съюз. Book1 е променлива от тип съюз. Името и цената са присвоени стойности. В съюз, само един от членовете му може да получи достъп наведнъж и всички останали членове ще имат стойности за боклук. Стойността на идентификатора не се отпечатва правилно, но стойността на цената се отпечатва правилно.
Фигура 03: Модифицирана програма C със съюз
Според горната програма Книгата е съюз. Book1 и book2 са променливи тип съюз. Първо се задава стойността за name book1 и тя се отпечатва. Тогава се задава стойността за name book2 и тя се отпечатва. Всички членове се отпечатват правилно, защото се използва един член в даден момент. Паметта, необходима за съхраняване на съюз, е паметта, необходима за най-големия елемент на обединението. В горната програма променливата на име е 20 байта. Тя е по-голяма от цената. И така, разпределението на паметта за обединението е 20 байта.
Структура срещу Съюз в С | |
Структурата е дефиниран от потребителя тип на C език, който позволява комбиниране на данни от различни типове заедно. | Union е дефиниран от потребителя тип на C език, който позволява комбиниране на данни от различни типове заедно. |
Достъпност | |
В една структура, всички нейни членове могат да имат достъп по всяко време. | В един съюз може да се получи достъп само до един от членовете му наведнъж и всички останали членове да съдържат стойности за боклук. |
Разпределение на паметта | |
Паметта, необходима за съхраняване на структурна променлива, е сумирането на размера на паметта на всички членове. | Паметта, необходима за съхраняване на променлива на обединението, е паметта, необходима за най-големия елемент в обединението. |
Ключова дума | |
Ключовата дума, използвана за дефиниране на структура, е „struct“. | Ключовата дума, използвана за дефиниране на съюз, е „съюз“. |
Масив се използва за съхранение на елементи от същия тип. Понякога е необходимо да се съхраняват елементи от данни от различни видове в едно и също място в паметта. C езикът за програмиране осигурява структура и обединение за изпълнение на тази задача. И двете са дефинирани от потребителя типове данни. Паметта, необходима за съхраняване на структурна променлива, е сумирането на размера на паметта на всички членове. Паметта, необходима за съхраняване на променлива на обединението, е паметта, необходима за най-големия елемент в обединението. Това е разликата между структура и съюз в С.
1. Точка, уроци. „Структури в C.“, Учебни точки, 15 август 2017. Достъпно тук
2. Точка, уроци. „Съюзи в В.“ , Точки за уроци, 15 август 2017. Достъпно тук