Объединение – структура, для которой в памяти выделяется ровно столько места сколько места в памяти занимает самый большой элемент структуры.
union packed // - ввели новый тип данных packed , это об'явление об'единения - union
{
char ch;
short sh;
unsigned int in;
long l;
float f;
double d;
};
об'единение packed имеет размер типа double, так как это наибольший элемент
Проверить, что это так можно, использовав операцию sizeof
printf("sizeof(union packed) = %d\n\n", sizeof(union packed) );
Объединение позволяет по разному обратиться к одному и томуже месту в памяти.
union packedX; - создали объект Х типа packed
X.d = 3.14159; - записали в него двойное вещественное
И попробуем по разному его извлечь.
printf("X.d = %f\n", X.d ); // можно обратиться к любому полю
printf("X.ch = %c\n", X.ch ); // но данные хранятся только одни
printf("X.in = %u\n", X.in );
Объединение позволяет нам экономно использовать память
9) программа Dc_9.*
Пример, как объединеие используется для построения пользовательского типа данных – «самолет»
Последняя строка определения типа данных aircraft сразу создаёт ещё 3 объекта «самолёт»
} fighter, bomber, transport; // create OBJECTS
Это почти как
struct aircraft fighter, bomber, transport;
В «самолёте» есть грузовое отделение, в котрое можно положить разный груз.
Естественно, что в «самолёт» загрузили, то там и лежит
10) программа Dc_10.*
Пример для проверки понимания работы с объединением.
Прочитайте внимательно пример и напишите результат работы программы.
Уберите комментарии и проверьте себя.
11) программа Dc_11.*
Пример переименовыания типа данных.
В программе используется массив данных типа: type AA[SIZE];
Так как не существует базового типа type, то он вводится с помощью оператора
typedef long type;
typeвыступает как синоним (новое обозначение) для типа long.
Поменяйте long например на double
Программа компилируется и работает, хотя тип данных массива изменился.
Задание (учебное):
Требуется решить задачу 2401.
Задание (проверочное):
Требуется решить задачу 2410
Замечания
-------------
а) Работающая Программа должна быть оформлена:
подписана и иметь структурированный вид
Что необходимо знать:
1. Средства препроцессора C #define #if
2. int main(int argc, char* argv[])
3 Динамическая память malloc() free().
4 Функции
указатель на функцию
функция с неопределенным количеством аргументов
5. Типы данных:
структура,
перечисление,
объединение
6. Переименование типов typedef
Вопросы для «продвинутых»
- Что в Лабораторной работе написано не правильно?
- Что в Лабораторной работе написано плохо?
- Что в Лабораторной работе пропущено и следует добавить?
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.