Что такое структура?
Структура - это определяемый пользователем тип данных на языке программирования 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" и имени объединения. Номер 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, только последняя переменная может быть доступна напрямую.
- Объединение используется, когда вам нужно использовать одну и ту же ячейку памяти для двух или более элементов данных.
- Это позволяет вам хранить данные только одного члена данных.
- Его выделенное пространство равно максимальному размеру элемента данных.
Недостатки конструкции
Вот минусы / недостатки использования структуры:
- Если сложность ИТ-проекта выходит за рамки предела, им становится сложно управлять.
- Изменение одной структуры данных в коде требует изменений во многих других местах. Поэтому изменения становится трудно отслеживать.
- Структура работает медленнее, поскольку требует места для хранения всех данных.
- Вы можете получить любой член в структуре за раз, тогда как вы можете получить доступ к одному члену за раз в объединении.
- Структура занимает пространство для каждого члена, записанного во внутренних параметрах, в то время как объединение занимает пространство для члена, имеющего наибольший размер, записанный во внутренних параметрах.
- Структура поддерживает гибкий массив. Union не поддерживает гибкий массив.
Недостатки союза
Вот минусы / недостатки использования union:
- Вы можете использовать только одного члена профсоюза одновременно.
- Все переменные объединения не могут быть инициализированы или использоваться с разными значениями одновременно.
- Союз выделяет одно общее хранилище для всех своих членов.
КЛЮЧЕВЫЕ ОТЛИЧИЯ:
- Каждому члену в структуре назначается уникальная ячейка памяти, в то время как в совокупности ячейка памяти используется всеми элементами данных.
- Изменение значения одного элемента данных не повлияет на другие элементы данных в структуре, тогда как изменение значения одного элемента данных изменит значение других элементов данных в объединении.
- Структура в основном используется для хранения различных типов данных, в то время как объединение в основном используется для хранения одного из многих типов данных.
- В структуре вы можете получить любой член за раз, с другой стороны, в union вы можете получить доступ к одному члену за раз.
- Структура поддерживает гибкий массив, а объединение не поддерживает гибкий массив.