
- •Определение алгоритма
- •Классификация языков
- •Модификаторы доступа
- •Объявление переменных
- •Локальные переменные
- •Формальные параметры
- •Глобальные переменные
- •Спецификаторы хранения
- •Оператор присваивания
- •Инициализация переменных
- •Константы
- •Операторы
- •Оператор ?
- •Операторы указания & и *
- •Оператор sizeof
- •Оператор «запятая»
- •Выражения
- •Преобразования типов в выражениях
- •Принудительные преобразования типов
- •Оператор break
- •Оператор continue
- •Метки и goto
- •Одномерный массив
- •Создание указателя на массив
- •Двумерные массивы
- •Массивы строк
- •Многомерные массивы
- •Индексация с помощью указателей
- •Размещение массивов
- •Функции
- •Оператор return
- •Правила видимости для функций
- •Аргументы функции. Передача по значению и передача по указателю
- •Передача массивов в функции
- •Аргументы функции main()
- •Возврат указателей
- •Указатели на функции
- •Структуры
- •Доступ к членам структуры
- •Присваивание структур
- •Массивы структур
- •Указатели на структуры
- •Битовые поля
- •Объединения
- •Перечисления
- •Использование typedef
- •Ввод, вывод, потоки и файлы
- •Форматированный консольный ввод-вывод
- •Модификаторы формата
- •Файловая система ansi c
- •Запись и чтение символа
- •Использование feof()
- •Работа со строками: fgets() и fputs()
- •Указатели
- •Односвязные списки
- •Обход односвязного списка
- •63.Бинарное дерево поиска. Вставка и поиск элемента по ключу в бинарном дереве поиска. Поиск элемента (find)
- •Добавление элемента (insert)
- •64.Бинарное дерево поиска. Удаление элемента из бинарного дерева поиска. Удаление узла (remove)
- •65.Обход бинарного дерева
- •66.Балансировка бинарного дерева поиска
-
Массивы структур
Для объявления массива структур следует сначала определить структуру, а затем объявить массив переменных данного типа. Например, для объявления 100-элементного массива структур типа addr, которая была ранее определена в данной лекции, следует написать:
struct addr addr_info[100];
Для доступа к отдельным структурам массива addr_info следует проиндексировать имя массива. Например, для вывода содержимого поля zip третьей структуры, следует написать:
printf(“%ld”, addr_info[2].zip);
Как и массивы переменных, массивы структур индексируются с 0.
-
Указатели на структуры
Указатели на структуры объявляются с помощью символа *,стоящего перед именем экземпляра структуры. Например, указатель addr_pointer на структуру addr объявляется так:
struct addr *addr_pointer;
Для того чтобы определить адрес структуры, достаточно поместить перед ее именем оператор &. Рассмотрим пример:
struct bal{
float balance;
char name[80];
}person;
struct bal *p; /создаем указатель на структуру/
p=&person; /присваиваем указателю p адрес структуры person/
Для доступа к членам структуры с помощью указателя на структуру следует использовать оператор «стрелка» ->.
p->balance /ссылка на поле баланс/
-
Битовые поля
Если ограничено место для хранения информации, можно сохранить несколько переменных в одном байте.
Некоторые интерфейсы устройств передают информацию, закодировав биты в один байт.
Некоторым процедурам кодирования необходимо получить доступ к отдельным битам в байте.
Стандартный вид объявления битовых полей следующий:
struct имя структуры {
тип имя1:длина;
тип имя2:длина;
…
тип имяN:длина;};
Пример
struct device {
unsigned active : 1;
unsigned ready : 1;
unsigned xmt_error : 1;
} dev_code;
Битовые поля имеют некоторые ограничения. Нельзя получить адрес переменной битового поля. Переменные битового поля не могут помещаться в массив. Переходя с компьютера на компьютер, нельзя быть уверенным в порядке следования бит (слева направо или справа налево). Любой код, использующий битовые поля, зависит от компьютера.
-
Объединения
Объединение- область памяти, которая используется для хранения переменных разных типов. Объединение позволяет интерпретировать один и тот же набор битов по-разному. Общий вид объявления объединения:
union имя_типа_объединения
{
тип имя_члена;
тип имя_члена;
.
}имена_экземпляров_объединения;
Например:
union union_type{
int i;
char ch[4];
};
-
Перечисления
Перечисления – это набор именованных целочисленных констант, определяющий все допустимые значения, которые может принимать переменная.
enum ярлык {список перечислений} список переменных;
enum coin{ penny, nickel, dime, quarter, half_dollar, dollar};
coin money;
В перечислениях каждому имени ставится в соответствие целочисленное значение и поэтому перечисления могут использоваться в любых целочисленных выражениях.
printf(“The value of quarter is %d “, quarter);
Если явно не проводить инициализацию, значение первого имени перечисления будет 0, второго 1 и т.д.
Можно определить значение одного или нескольких символов, использую инициализатор. Это делается путём помещения за символом знака равенства и целочисленного значения. При использовании инициализатора, имена, следующие за инициализированным, получают значение большее на 1, чем указанное перед этим.
enum coin{ penny, nickel, dime, quarter=100,
half_dollar, dollar};
Теперь имена получат следующие значения:
penny 0
nickel 1
dime 2
quarter 100
half_dollar 101
dollar 102