Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C. Тема 1. Раздел 8

.pdf
Скачиваний:
16
Добавлен:
21.03.2016
Размер:
618 Кб
Скачать
☆

struct

{

unsigned int parking_lights : 1; unsigned int dim_light : 1; unsigned int distance_light : 1; unsigned int left : 1;

unsigned int right : 1; unsigned int fog_lamp : 1;

unsigned int rear_fog_light : 1; } flags;

flags.parking_lights = 1;

Часть 3

Объединение – это переменная, которая в различные моменты времени может содержать объекты разных типов и размеров

union u_tag

{

int ival; float fval; char *pval;

} uval;

Часть 4

В ранних версиях компилятора структуры нельзя было копировать целиком, как обычные переменные

В новых компиляторах такая возможность присутствует

Копирование структур производится побайтно или поэлементно (вручную)

Недостатки копирования структур

Поэлементное копирование вручную не удобно

Это требует не всегда оправданных вычислительных затрат

Следует применять только для создания клона структуры

Вместо копирования структур часто применяют обращение к одной и той же структуре с помощью указателей

Синтаксис «в лоб»

(*указатель_на_структуру). элемент

Удобный синтаксис

указатель_на_структуру->элемент

struct date

{

int day; int month; int year;

int yearday;

char month_name[4]; };

struct date d = {4, 7, 1776, 186, "jul"}; struct date *pd;

pd = &d; (*pd).day = 12; pd->year = 2009;

struct point

{

int x; int y;

} *pp;

struct point p = {1, 2};

pp = &p;

++pp->x; // x = 2

Часть 5