Типы данных. Знакомствоу с простейшими видами пользовательских типов данных. Объединение разнотипных данных под одним именем, страница 7

- через имя        ( оператор "точка" )  ,

- через указатель  ( оператор    ->   )  .

Указание количества бит члена, относящегося к битовым, производится через двоеточие после имени члена:

┌─────────────────────────────────────┐

│  struct Ярлык {                    

│             . . .                  

│                   Тип Имя : Длина; 

│             . . .                  

│               };                   

└─────────────────────────────────────┘

Битовый член структуры может не иметь имени, а только тип и длину.

К подобному безымянному члену битового поля нет доступа, но можно попробовать исхитриться получить доступ через указатель на соседние элементы (но не как обычно - имени-то нет!). Где это можно применить, не знаю.

┌──────────────────────────────────────────────┐

Структуру с битовыми полями можно инициализировать при создании объекта. └──────────────────────────────────────────────┘

Инициализация выполняется обычным образом:

Ярлык Объект = {Список значений инициализации}│;│

, где             Ярлык   - Имя структуры,                         

Объект - Имя создаваемого объекта.              

Не забывайте про ;

На битовый член структуры накладываются следующие ограничения:

- Тип битового члена может быть только:  -int,   - signed, - unsigned.

- Одноразрядный битовый член может быть только unsigned.

- Битовое поле не может иметь длину более, чем длина типа int.

- Внимание! Для разных компьютеров и трансляторов знаковый разряд может быть левым или правым.

В ВС3.1 знаковый разряд - правый, следующий за старшим

(для справки: самый младший разряд - левый).

- Нельзя получить адрес переменной битового поля.

- Из переменных битового поля нельзя формировать массивы (но из объектов с битовыми полями - можно).

- Коды, использующие битовые поля зависят от компьютера:

- знак числа       слева - справа;

- младший разряд   слева - справа.

Могут существовать  смешанные структуры с обычными переменными и битовыми полями.

┌─────────                                                                        ───────────┐

│ Для битовых полей оптимизация расположения элементов структур в памяти 

│  выполняется только для элементов, расположенных подряд в пределах, ог- 

│  раниченных длиной, занимаемой одним словом целочисленного типа.         │

└─────────                                                      ───────────┘

Можно предложить исследование ещё множества интересностей и необычностей в исследовании вопросов битовых полей:

- построение вложенных структур;

- исследование возможностей операций с битовыми переменными:

- выходы за границы диапазона,

- логические операции ...

- игра с указателями;

И множество других, но попробуйте сами. Если я буду всё это рассматривать в

ПИ++, то я могу его не закончить никогда!

Единственное, что я могу вам предложить - это при возникновении какой-либо необходимости смело спрашивать компьютер. Он вам всегда подскажет - это не Зоя Космодемьянская!

*                  *                      *

┌──────────────────────────────┐        t0000136

│  Создание псевдонимов типам  │

└──────────────────────────────┘

В С++ имеется возможность давать именам уже известных типов данных, как базовых, так и пользовательских, новые имена - псевдонимы.

При этом новые и старые имена становятся ТОЖДЕСТВЕННЫМИ. Объявленные объекты и переменные транслятор считает однотипными.

Для того, чтобы дать типу данных псевдоним, следует выполнить:

┌───────────────────────────────────────────┐

│  typedef Имя_типа_данных Новое_имя_типа;  │

└───────────────────────────────────────────┘

где         typedef - ключевое слово-оператор, указывающее на операцию создания псевдонима для известного типа данных;

Имя_типа_данных - старое имя типа данных;

Новое_имя_типа  - просто гладиолус.

Для оправдания применения оператора typedef говорят, что его применяют для облегчения создания машинно-независимых программ. Мол, для перехода на другую платформу достаточно поменять только строку с typedef. Но я не слышал, чтобы базовые типы в С++ назывались как-то по-другому. То ли они сказали тихо, то ли тихо сказали.

Применение typedef для более сложных типов такое же, но не понятно зачем.

*                   *                     *