Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Распределение памяти. Битовые поля структур (bit-fields)




Объединения

Битовые поля структур (bit-fields)

Использование в качестве члена указателя на ту же структуру

struct mystruct {

int a;

int b;

mystruct *p;

}

Используется для построения связных списков


12 Объявление переменных типа структур в С и С++

 

Объявление структуры одинаково для С и С++

struct mystruct {

int a;

int b;

}

 

Задание структурных переменных
C C++
struct mystruct prim mystruct prim
Ключевое слово struct - обязательно Ключевое слово struct - отсутствует

 

Назначение битовых полей
1. Для хранения нескольких логических переменных в одном байте, что экономит память
2. Для приема информации внешних устройств, закодированных в битах
3. Для подпрограмм кодирования, которым требуется доступ к отдельному биту в рамках байта

 

a) Общий формат определения битовых полей

struct имя_типа_структуры {

тип имя1:длина;

тип имя2:длина;

...

тип имяN:длина;

} имена_структурных_переменных;

 

Длина структуры всегда кратна 8 Тип поля обычно unsigned

 

б ) Пример структуры, содержащей одно битовое поле

struct onebit{

unsigned field1:1;

} inform;

 

в) Пример структуры, определяющей состояние порта

struct status {

unsigned field1:1;

unsigned field2:1;

unsigned field3:1;

unsigned field4:1;

unsigned field5:1;

unsigned field6:1;

unsigned field7:1;

unsigned field8:1;

}inform1;

 

г ) В структуре можно пропускать поля

struct status1 {

unsigned:5; // пять битов не интересуют; имя поля можно не

//использовать

unsigned field6:1;

unsigned field7:1;// последний бит не интересует, поэтому поле не

//определяется

}inform2;

 

Обращение к полю:

inform2.field6=0;

 


д) В структуре можно смешивать “обычные” члены с битовыми полями

 

struct stud1 {

AnsiString name;

int grup; // номер группы

addr address; // в качестве члена структуры используется вложенная

// структура

unsigned work:1; // признак вечернее отделение или дневное

}student; // переменная типа stud

 

 

· Объединение состоит из нескольких переменных, которые разделяют одну и ту же область памяти · Объявление объединения начинается с ключевого слова union · При объявлении объединения компилятор автоматически выделяет область памяти, достаточную для хранения в объединении переменных самого большого по объему типа  

 

union myunion { // объявление объединения не задает переменной и

short int i; // не выделяет памяти

char ch;

}u_var; // имя переменной (память выделяется)


 

Переменная Число байт
i  
ch  

 

 

 

сh

 

i

 

Обращение к элементу объединения:

u_var.ch=’N’;

Для объединений разрешена операция ->, если обращение к объединению производится с помощью указателя.

 




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 522; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.018 сек.