русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Объединения


Дата добавления: 2013-12-23; просмотров: 807; Нарушение авторских прав


Структуры и битовые поля

Доступ к элементам структуры

Для обращения к отдельным элементам структуры можно использовать "точку" — операцию обращения к члену структуры (.). Синтаксис операции:

stname.mname

В этой записи stname является переменной, связанной со структурным типом, a mname — это имя любой переменной-члена структуры.

Пример: записать информацию в элемент sunodel при помощи следующего оператора:

gets(stused_boat.szmodel) ;

В этом операторе stused_boat имя структуры, a synodel переменная-член структуры. Аналогичным образом для печати элемента структуры можно использовать функцию printf():

printf ("%ld", stused_boat. lmotor_hours) ;

Доступ к элементам структуры в C++ по сути такой же:

cin » stused boat. sztype;

Этот оператор выполняет считывание типа катера stused_boat в символьный массив; следующий оператор выводит на экран продажную стоимость

stused_boat. cout « stused_boat.fsaleprice;

Элементы структуры обрабатываются так же, как и любые другие переменные С или C++; необходимо только всегда использовать операцию "точка".

В С и C++ имеется возможность доступа к отдельным разрядам (битам) в некотором более крупном типе данных, например, в байте. Это полезно, например, для изменения масок, используемых для системных целей и графики. Возможность доступа к разрядам строится на основе структур С и C++.

Рассмотрим для примера информацию, необходимую для изменения регистра статуса клавиатуры компьютера. Этот регистр в компьютерах IBM содержит следующую информацию:

биты регистра

Статус клавиатуры: 76543210

Порт (417h)

Где

bit0 = RIGHT SHIFT не нажат (1)

bit1 = LEFT SHIFT не нажат (1)

bit2 = CTRL не нажат (1)

bit3 = ALT не нажат (1)

bit4 = SCROLL LOCK активен (1)

bit5 = NUM LOCK активен (1)



bit6 = CAPS LOCK активен (1)

bit7 = INS активен' (1)

Для доступа и управления этими данными можно создать структуру следующего вида:

struct stkeybits {

unsigned char

ucrshift : 1, /* младший разряд */

uclshift : 1,

ucctrl : 1,

ucalt : I,

ucscroll : I,

ucnumlock : I,

uccapiock : I,

ucinsert : 1; /* старший разряд */

} stkey_register;

Биты в структуре начинаются с младшего и заканчиваются старшим. Можно указывать несколько битов, задавая их количество (вместо 1). В битовых полях можно использовать только целочисленные типы.

Обращение к элементам структуры битовых полей выполняется как обычно.


Объединение — еще один тип данных, который можно использовать различными способами. К примеру, некоторое объединение может рассматриваться как целое значение при выполнении одной операции и как число с плавающей точкой или двойной точности — при выполнении другой. По виду объединения напоминают структуры; однако, они сильно отличаются. Объединение, так же как и структура, может содержать несколько различных типов данных. Однако в объединении эти данные занимают одну и ту же область памяти. В отдельный момент времени объединение может хранить информацию только об одном типе данных. Во многих других языках высокого уровня данное языковое средство называется "записью с вариантами" (variant record).



<== предыдущая лекция | следующая лекция ==>
Синтаксис и правила | Синтаксис и правила


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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