Какво представлява структурата?
Структурата е дефиниран от потребителя тип данни в програмен език C, който комбинира логически свързани елементи от различни типове данни заедно.
Всички структурни елементи се съхраняват на съседни места в паметта. Променливата на типа структура може да съхранява повече от един елемент от различни типове данни под едно име.
В този урок ще научите:
- Какво представлява структурата?
- Какво е съюз
- Синтаксис на деклариране на структура
- Пример за структура в C програмиране
- Синтаксис на Деклариране на съюз
- Пример за програмиране на съюз в C
- Структура Vs. Съюз
- Предимства на структурата
- Предимства на обединението
- Недостатъци на структурата
- Недостатъци на съюза
Какво е съюз
Union е потребителски дефиниран тип данни, точно като структура. Union съчетава обекти от различни видове и размери заедно. Променливата на обединението разпределя паметта, равна на пространството, за да събере най-голямата променлива на обединението. Тя позволява на различни видове обекти да споделят едно и също място.
Синтаксис на деклариране на структура
struct [name of the structure]{type member1;type member2;type member3;};
Структурата се декларира с помощта на ключовата дума "struct" и името на структурата. Номер 1, номер 2, номер 3 са отделни членове на структурата. Частта на тялото се завършва с точка и запетая (;).
Пример за структура в C програмиране
#includestruct student {char name[60];int roll_no;float marks;} sdt;int main() {printf("Enter the following information:\n");printf("Enter student name: ");fgets(sdt.name, sizeof(sdt.name), stdin);printf("Enter student roll number: ");scanf("%d", & sdt. roll_no);printf("Enter students marks: ");scanf("%f", & sdt.marks);printf("The information you have entered is: \n");printf("Student name: ");printf("%s", sdt.name);printf("Student roll number: %d\n", sdt. roll_no);printf("Student marks: %.1f\n", sdt.marks);return 0;}
В горната програма се създава структура, наречена студент. Тази структура има три члена с данни: 1) име (низ), 2) roll_no (цяло число) и 3) марки (плаващ).
След това се създава структурна променлива sdt, която съхранява информацията за студентите и я показва на екрана на компютъра.
Изход:
Въведете следната информация:
Въведете име на студент: Джеймс
Въведете номер на студентски списък: 21
Въведете студентски оценки: 67
Въведената от вас информация е:
Име на студент: Джон
Номер на студентски списък: 21
Студентски оценки: 67,0
Синтаксис на Деклариране на съюз
union [name of union]{type member1;type member2;type member3;};
Union се декларира с помощта на ключовата дума "union" и името на union. Номер 1, номер 2, номер 3 са индивидуални членове на съюза. Частта на тялото се завършва с точка и запетая (;).
Пример за програмиране на съюз в C
#includeunion item{int x;float y;char ch;};int main( ){union item it;it.x = 12;it.y = 20.2;it.ch = 'a';printf("%d\n", it.x);printf("%f\n", it.y);printf("%c\n", it.ch);return 0;}
Изход:
1101109601
20.199892
а
В горната програма можете да видите, че стойностите на x и y се повреждат. Само променлива ch отпечатва очаквания резултат. Това е така, защото в обединение мястото на паметта се споделя между всички типове данни на членовете.
Следователно, единственият член с данни, чиято стойност в момента се съхранява, ще заема място в паметта. Стойността на променливата ch беше съхранена най-накрая, така че стойността на останалите променливи се губи.
Структура Vs. Съюз
Ето важната разлика между структурата и обединението:
Структура | Съюз |
Можете да използвате ключова дума struct, за да дефинирате структура. | Можете да използвате ключова дума union, за да определите съюз. |
На всеки член в структурата се присвоява уникално място в паметта. | Като обединение, местоположението в паметта се споделя от всички членове на данните. |
Промяната на стойността на един член на данни няма да повлияе на други членове на данни в структурата. | Промяната на стойността на един член на данни ще промени стойността на другите членове на данни в обединението. |
Тя ви позволява да инициализирате няколко члена наведнъж. | Тя ви позволява да инициализирате само първия член на обединението. |
Общият размер на структурата е сбор от размера на всеки член на данните. | Общият размер на обединението е размерът на най-големия член на данни. |
Използва се главно за съхранение на различни типове данни. | Използва се главно за съхраняване на един от многото налични типове данни. |
Той заема място за всеки член, записан във вътрешни параметри. | Той заема място за член с най-голям размер, записан във вътрешни параметри. |
Можете да извлечете всеки член наведнъж. | Можете да получите достъп до един член наведнъж в съюза. |
Той поддържа гъвкав масив. | Той не поддържа гъвкав масив. |
Предимства на структурата
Ето плюсове / ползи от използването на структурата:
- Структурите събират повече от едно парче данни за един и същ обект заедно на едно и също място.
- Полезно е, когато искате да съберете данните от подобни типове данни и параметри като име, фамилия и т.н.
- Поддържа се много лесно, тъй като можем да представим целия запис, като използваме едно име.
- В структурата можем да предадем пълен набор от записи на всяка функция, използвайки един параметър.
- Можете да използвате масив от структура, за да съхранявате повече записи с подобни типове.
Предимства на обединението
Ето плюсове / ползи за използването на съюз:
- Той заема по-малко памет в сравнение със структурата.
- Когато използвате съюз, само последната променлива може да бъде директно достъпна.
- Union се използва, когато трябва да използвате едно и също място в паметта за двама или повече членове на данни.
- Тя ви позволява да съхранявате данни само на един член на данни.
- Разпределеното му пространство е равно на максималния размер на члена на данните.
Недостатъци на структурата
Ето минуси / недостатъци за използване на структурата:
- Ако сложността на ИТ проекта надхвърли границата, става трудно да се управлява.
- Промяната на една структура от данни в код изисква промени на много други места. Следователно промените стават трудни за проследяване.
- Структурата е по-бавна, защото изисква място за съхранение на всички данни.
- Можете да извлечете всеки член наведнъж в структурата, докато имате достъп до един член наведнъж в обединението.
- Структурата заема място за всеки член, записан във вътрешни параметри, докато съюзът заема място за член с най-голям размер, записан във вътрешни параметри.
- Структурата поддържа гъвкав масив. Union не поддържа гъвкав масив.
Недостатъци на съюза
Тук има минуси / недостатъци за използване на съюз:
- Можете да използвате само един член на съюза наведнъж.
- Всички обединени променливи не могат да бъдат инициализирани или използвани с променливи стойности наведнъж.
- Съюзът определя едно общо място за съхранение на всички свои членове.
КЛЮЧОВИ РАЗЛИКИ:
- На всеки член в структурата се присвоява уникално място в паметта, докато в обединение мястото на паметта се споделя от всички членове на данните.
- Промяната на стойността на един член на данни няма да засегне други членове на данни в структурата, докато промяната на стойността на един член на данни ще промени стойността на другите членове на данни в обединението.
- Структурата се използва главно за съхраняване на различни типове данни, докато обединението се използва главно за съхраняване на един от многото типове данни.
- В структурата можете да изтеглите всеки член наведнъж, от друга страна в съюз, можете да получите достъп до един член наведнъж.
- Структурата поддържа гъвкав масив, докато съюзът не поддържа гъвкав масив.