Работа с примитивными типами данных (int, char, float, double, long, unsiged ...), автоматические преобразования данных. Тип и структура данных с плавающей точкой (float, double), машинная точность, ошибки округления и контроль точности вычислений. Функции и передача параметров, локальные переменные. Понятие о стеке вызовов функций. Рекурсивные функции, проблема переполнения стека. Типы распределения памяти (program, heap, stack, static) Управляющие структуры - операторы ветвления, циклы. Варианты циклов for и while. Инициализация переменных в циклах. Ключевые слова break, continue Локализация переменных, области видимости. Статические переменные в функциях. Указатели, арифметика указателей, адреса переменных. Массивы и связь с указателями. Передача параметров по указателю Указатели на указатели. Многомерные массивы. Работа со строками. Строки как массивы символов. Строки и указатели. Основные библиотечные функции для работы со строками. Проблемы переполнения буфера. Структуры и объединения, typedef, sizeof, доступ к полям, использование в программах для создания сложных типов данных. Массивы структур Динамическое распределение памяти - malloc, calloc, realloc, free. Приведение (кастинг) данных к определенному типу. Корректная работа с памятью (sizeof, приведение к типу, etc). Типичные ошибки (переполнение буфера, утечки памяти, попытки доступа к освобожденной памяти, попытки дважды освобождать память, возврат указателя на локальную переменную, etc). Основные динамические структуры данных - связные списки, стеки, очереди, деревья. Основные алгоритмы - сортировка, поиск, etc. Функции с неопределенным / переменным числом аргументов. Varargs. Работа с аргументами командной строки в программах Ввод / вывод. Чтение из файлов / запись в файлы. Буферное чтение / запись. Препроцессор, макро-директивы Проекты с несколькими файлами, заголовочные файлы (.h), использование препроцессора (#define, #include, #if, etc), отделение интерфейса от имплементации, области видимости static, extern Этапы компиляции. Раздельная компиляция, объектные файлы, линковка. Make - файлы. Работа с компилятором и linker из командной строки. Основные флаги компилятора.