Доступ к отдельному биту

 

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

Один из методов, встроенных в язык Си и позволяющих иметь доступ к биту, – это поля битов (bit-fields). В действительности поля битов – это специальный тип структуры, в котором определено, из каких бит состоит каждый элемент. Основная форма объявления такой структуры следующая:

struct имя_ структуры

{

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

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

…………………………. ;

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

}

В этом объявлении структур тип может быть одним из следующих: int, unsigned, signed. Имя I может быть пропущено, тогда соответственно число бит не используется (пропускается). Длина структуры всегда кратна восьми. Так, если указать:

struct onebit

{

unsigned one_bit : 1;

} obj ;

то для переменой obj будет выделено 8 бит, но использоваться будет только первый.

 

6.5. Переименование типов – typedef

Язык Си с помощью оператора typedef позволяет задавать новое имя уже существующим переменным. При этом не создается новый тип данных.

Например:

typedef char SIMBOL;

typedef unsigned UNSIGN;

typedef float real;

Достаточно часто используется оператор typedef с применением структур:

typedef struct st_tag {

char name[30];

int kurs;

char group[3];

int stip;

} STUDENT;

Теперь для определения переменной можно использовать

struct st_tag avar;

а можно использовать

STUDENT avar;

 

Выделение памяти и управление ею

Определение размера выделяемой памяти (операция sizeof)

С помощью этой операции можно определить в байтах размер памяти, которая соответствует идентификатору или типу. Выражение с операцией sizeof имеет следующий формат

sizeof (выражение)

Выражение - это либо идентификатор, либо имя типа, заключенное в круглые скобки:

sizeof (имя_объекта) ;

Идентификатор не может относиться к полю битов или быть именем функции.

Если имя типа описывает массив, то результатом является размер всего массива, а не размер указателя, состветствующий имени массива.

Пример 7.1:

# include <stdio. h>

# include <conio. h>

void main (void)

{

float mas[100];

clrscr();

printf( “Размер одного элемента массива %d в байтах\n, sizeof ( mas[20]));

printf( “Размер всего массива %d в байтах\n, sizeof ( mas));

getch();

}

Результат выполнения программы:

Размер одного элемента массива 4 байта.

Размер всего массива 400 байт.

 








Дата добавления: 2017-06-02; просмотров: 333;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.