Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






 

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

 


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

mylektsii.su - Мои Лекции - 2015-2024 год. (0.005 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал