struсt PRIM { char * name ; long num;} A,B,C;
При однократном использовании имя структуры можно не указывать.
Можно определить тип указателя на структуру
имя_структуры * имя_указателя;
card* prt=&rec1; / / совмещ-ся определение указателя и его инициализации
С использованием указателя доступ к элементу структуры производится через операцию косвенного вызова:
имя_указателя®имя_атрибута;
или через операцию разыменования:
(*имя_указателя).имя_атрибута;
prt®pages; (*prt).pages;
В определение структурного типа может входить указатель на структуру:
struct record
{card book; record* prev; record* next;}
Структуры размещаются в памяти с начала слова, то есть в байте с четным индексом. Если структура занимает нечетное количество байтов, она выравнивается на границу слова.
Атрибут структуры не может иметь тот же самый тип, что и определяемый структурный тип, но может быть указателем на структуру определяемого типа. Если требуется в состав структуры включить атрибут, имеющий тип другой структуры, то возможно его предварительное неполное определение.
struct A ; // неполное определение
struct B { struct A* pa; …};
struct A { … };
Структуры могут быть результатом возвращаемой функции. Функция также может возвращать указатель или ссылку на структуру.
card func1 (…); //прототип функции
card* func2 (…); //возвращаемый указатель
card& func3 (…); //возврат ссылки
В качестве параметра структура может быть передана в функцию непосредственно, либо с помощью указателя или ссылки.
void func4 (card); // прототип
void func5 (card*);
void func6 (card&);
Память для размещения структуры может быть выделена динамически
card* prt=new card;
card* prt=new card[5];
prt[2].pages=600;
Объединения могут включать данные разных типов. Все атрибуты объединения имеют один и тот же начальный адрес
Определение типа объединения
union имя_объединяющего_типа {атрибуты объединения};
struct { long L; int i1, i2; char c [4]; } s
Размещение структуры в памяти
Объединение
union { long L; int i1, i2; char i[4]; } UNI;
Размеры атрибутов объединения определяются их типами, а размер объединения определяется максимальным размером его элементов. Объединение можно рассматривать как структуру, все атрибуты которой имеют нулевое смещение от ее начала и размещаются в одной и той же области памяти.
Можно определять массивы объединений, указатели и ссылки на объединения. Обращение к атрибутам объединения выполняется так же, как и к атрибутам структуры.
Основное назначение объединений: выполнять различную интерпретацию одной и той же области памяти.
c. i = …;
cout << c.h [0] << c.h [1];
Элементами объединения могут быть массивы и структуры.
В модуле dos.h определены типы для обращения к регистрам процессора:
struct WORDREGS{ unsigned int ax,bx,cx,dx,si,di,cflag,flags; }
struct BYTEREGS { unsigned char al, ah, bl, bh, cl, ch, dl, dh; };
union REGS {struct WORDREGS x; struct BYTEREGS h;}
Объединения типа REGS используются при обращении к библиотечным функциям обработки прерываний.
union REGS in, out;
char ch, attr;
in.h.ah = 8; // номер вызываемой функции через регистр ah
in.h.bh = page; // номер страницы видеопамяти
int 86 (0x10, &in, &out); // вызов 16 прерывания
ch=out.h.al; // значение кода АSCII символа из видеопамяти
attr = out.h.ah; // атрибут символа из видеопамяти
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.