ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Массивы структур. Битовые поляМассивы структур Структурный тип может быть использован для декларации массивов, элементами которых являются структурные переменные, например: struct person spisok[100]; - spisok - массив структур; или struct person { char fio[40]; int day, month, year; } spisok[100]; В данном случае обращение к полю, например, day i -й записи может быть выполнено одним из следующих способов: spisok[i]. day, *(spisok+i). day, (spisok+i) -> day. Битовые поля Структура может содержать любые комбинации битовых полей с данными других типов. Целочисленные элементы типа signed или unsigned можно объявить битовыми полями шириной от 1 до 16 бит. Ширина битового поля и его необязательный идентификатор задаются следующим образом: спецификатор_типа <идентификатор_битового_поля>:длина; где "спецификатор_типа" - это char, unsigned char, int или unsigned int. Битовые поля располагаются с нижнего и кончая старшим битом слова. Выражение "длина" должно быть задано и должно задавать целочисленную константу со значением в диапазоне от 0 до 16. Если идентификатор битового поля опущен, то число бит, заданное выражением "длина", распределяется в памяти, но поле при этом остается недоступным программе. Это позволяет создавать битовые шаблоны для, например, аппаратных регистров компьютера, в которых некоторые биты не используются. Например: struct mystruct { int i:2; unsigned j:5; int:4; int k:1; unsigned m:4; } a, b, c;
Целочисленные поля хранятся в виде дополнения до двух, причем крайний левый бит побещается в наиболее значащий бит. Для битового поля типа int (например, signed) наиболее значащий бит интерпретируется как знаковый бит. Битовое поле шириной 2, содержащее двоичное 11, будет, следовательно, в случае типа unsigned интерпретироваться как 3, а в случае int как -1. В предыдущем примере допустимое выражение a.i = 6 поместит в a.i двоичное значение 10 = -2, не выдавая каких-либо предупреждений. Поле k типа signed int шириной 1 может содержать только значения -1 и 0, так как битовый шаблон 1 будет интерпретирован как -1. Примечание: Битовые поля могут объявляться только в структурах, объединениях и классах. Доступ к ним
выполняется теми же селекторами элементов (операциями. и ->), что используются для доступа к элементам других типов. Кроме того, битовые поля вызывают некоторые проблемы с созданием переносимых кодов, поскольку организация бит в байтах и байт в словах зависит от конкретной машины. Выражение &mystruct.x недопустимо, так как x - это идентификатор битового поля, а никакой гарантии, что mystruct.x имеет адрес на границе байта, нет. Не нашли, что искали? Воспользуйтесь поиском:
|