Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Доступ к отдельному биту
В отличие от других языков программирования язык Си обеспечивает доступ к одному или нескольким битам в байте или слове. Это имеет свои преимущества. Если многие переменные принимают только два значения, (такие переменные называют флагами), то можно использовать 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 байт.
|