Составители:
Рубрика:
struct mystruct
{
int i:2;
unsigned j:5;
int:4;
int k:1;
unsigned m:4;
} a, b, c;
размещение в памяти следующее :
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
| m | k | не использу- | j | I |
ется
Для знаковых полей старший левый бит интерпретируется как знак. Например, ес-
ли в поле шириной 2 бита записано двоичное 11, то это интерпретируется как 3 для типа
unsigned, но как -1 для типа int. Битовые поля могут быть определены только в структу-
рах, объединениях и классах. Доступ к ним осуществляется с помощью тех же операто-
ров
. и ->.
Битовые поля могут быть любого целого типа. Имя поля может отсутствовать, та-
кие поля служат для выравнивания на аппаратную границу. Доступ к полю осуществля-
ется обычным способом - по имени. Адрес поля получить нельзя, однако в остальном
битовые поля можно использовать точно так же, как обычные поля структуры. Следует
учитывать, что операции с отдельными битами реализуются гораздо менее эффективно,
чем с байтами и словами, так как компилятор должен генерировать специальные коды, и
экономия памяти под переменные оборачивается увеличением объема кода программы.
Размещение битовых полей в памяти зависит от компилятора и аппаратуры.
В заключение изучения структур рассмотрим пример, демонстрирующий их воз-
можности. В примере создается структура Name, полями которой являются фамилия и
имя, далее создаются функции ввода и вывода для полей структуры Name. В исполняе-
мом коде создаются 2 объекта (first, second) структуры Name и осуществляется ввод фа-
милий и имен 2 человек в созданные объекты структуры и дальнейший их вывод на эк-
ран. В результате выполнения программы на экран будет выведен следующий текст:
Программа, использующая структуры.
Введите фамилию: Иванов
Введите имя: Иван
Введите фамилию: Петров
Введите имя: Петр
Иванов Иван
Петров Петр
Для завершения нажмите любую клавишу
#include <stdio.h>
#include <conio.h>
57
struct mystruct
{
int i:2;
unsigned j:5;
int:4;
int k:1;
unsigned m:4;
} a, b, c;
размещение в памяти следующее :
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
| m | k | не использу- | j | I |
ется
Для знаковых полей старший левый бит интерпретируется как знак. Например, ес-
ли в поле шириной 2 бита записано двоичное 11, то это интерпретируется как 3 для типа
unsigned, но как -1 для типа int. Битовые поля могут быть определены только в структу-
рах, объединениях и классах. Доступ к ним осуществляется с помощью тех же операто-
ров . и ->.
Битовые поля могут быть любого целого типа. Имя поля может отсутствовать, та-
кие поля служат для выравнивания на аппаратную границу. Доступ к полю осуществля-
ется обычным способом - по имени. Адрес поля получить нельзя, однако в остальном
битовые поля можно использовать точно так же, как обычные поля структуры. Следует
учитывать, что операции с отдельными битами реализуются гораздо менее эффективно,
чем с байтами и словами, так как компилятор должен генерировать специальные коды, и
экономия памяти под переменные оборачивается увеличением объема кода программы.
Размещение битовых полей в памяти зависит от компилятора и аппаратуры.
В заключение изучения структур рассмотрим пример, демонстрирующий их воз-
можности. В примере создается структура Name, полями которой являются фамилия и
имя, далее создаются функции ввода и вывода для полей структуры Name. В исполняе-
мом коде создаются 2 объекта (first, second) структуры Name и осуществляется ввод фа-
милий и имен 2 человек в созданные объекты структуры и дальнейший их вывод на эк-
ран. В результате выполнения программы на экран будет выведен следующий текст:
Программа, использующая структуры.
Введите фамилию: Иванов
Введите имя: Иван
Введите фамилию: Петров
Введите имя: Петр
Иванов Иван
Петров Петр
Для завершения нажмите любую клавишу
#include
#include
57
Страницы
- « первая
- ‹ предыдущая
- …
- 55
- 56
- 57
- 58
- 59
- …
- следующая ›
- последняя »
