- Глава 01. Обзор возможностей языка C
- Краткая история развития С
- С — язык среднего уровня
- Язык С хорошо структурирован
- Язык С создан для программистов
- Компилятор и интерпретатор
- Структура программы на языке С
- Библиотека и компановка
- Раздельная компиляция
- Компиляция программы на языке С
- Карта памяти программы на языке С
- Сравнительная характеристика языков С и С++
- Словарь терминов
- Краткая история развития С
- Глава 02. Выражения
- Базовые типы данных
- Модификация базовых типов
- Имена переменных
- Переменные
- Четыре типа областей видимости
- Квалификатор типа
- Спецификаторы класса памяти
- Инициализация переменных
- Константы
- Операции
- Выражения
- Базовые типы данных
- Глава 03. Операторы
- Логические значениия ИСТИНА (True) и ЛОЖЬ (False) в языке С
- Условные операторы
- Вложенные условные операторы if
- Лестница if-else-if
- Оператор цикла
- Оператор перехода
- Оператор-выражение
- Блок операторов
- Логические значениия ИСТИНА (True) и ЛОЖЬ (False) в языке С
- Глава 04. Массивы и строки
- Одномерные массивы
- Создание указателя на массив
- Передача одномерного массива в функцию
- Строки
- Двухмерные массивы
- Многомерные массивы
- Индексация указателей
- Инициализация массивов
- Массивы переменной длины
- Приемы использования массивов и строк на примере игры в крестики-нолики
- Одномерные массивы
- Глава 05. Указатели
- Что такое указатели
- Указательные переменные
- Операции для работы с указателями
- Указательные выражения
- Указатели и массивы
- Многоуровневая адресация
- Инициализация указателей
- Указатели на функции
- Функции динамического распределения
- Указатели с квалификатором restrict
- Трудности при работе с указателями
- Что такое указатели
- Глава 06. Функции
- Общий вид функции
- Что такое область действия функции
- Аргументы функции
- Аргументы функции main(): argv и argc
- Оператор return
- Что возвращает функция main()?
- Рекурсия
- Прототип функции
- Объявление списков параметров переменной длины
- Правило «неявного int»
- Старомодные и современные объявления параметров функций
- Ключевое слово inline
- Общий вид функции
- Глава 07. Структуры, объединения, перечисления и декларации typedef
- Структуры
- Массивы структур
- Передача структур функциям
- Указатели на структуры
- Массивы и структуры внутри структур
- Объединения
- Битовые поля
- Перечисления
- Важное различие между С и С++
- Использование sizof для обеспечения переносимости
- Средство typedef
- Структуры
- Глава 08. Ввод / вывод на консоль
- Глава 09. Файловый ввод / вывод
- Файловый ввод / вывод в С и С++
- Файловый ввод / вывод в стандартном С и UNIX
- Потоки и файлы
- Основы файловой системы
- Функции fread() и fwrite()
- Ввод / вывод при прямом доступе: функция fseek()
- Функции fprinf() и fscanf()
- Стандартные потоки
- Файловый ввод / вывод в С и С++
- Глава 10. Препроцессор и комментарии
- Препроцессор
- Директива #define
- Директива #error
- Директива #include
- Директивы условной компиляции
- Директива #undef
- Использование defined
- Директива #line
- Директива #pragma
- Операторы препроцессора # и ##
- Имена предопределенных макрокоманд
- Комментарии
- Препроцессор
- Глава 11. C99
- Сравнение С99 с С89. Общее впечатление
- Указатели, определенные с квалификаторами типа restrict
- Ключевое слово inline
- Новые встроенные типы данных
- Расширение массивов
- Однострочные комментарии
- Распределение кода и объявлений
- Изменения препроцессора
- Объявление переменных внутри цикла for
- Составные литералы
- Массивы с переменными границами в качестве членов структур
- Назначенные инициализаторы
- Новые возможности семейства функций printf() и scanf()
- Новые библиотеки С99
- Зарезервированный идентификатор __func__
- Расширение граничных значений трансляции
- Неявный int больше не поддерживается
- Удалены неявные объявления функций
- Ограничения на return
- Расширенные целые типы
- Изменения в правилах продвижения целых типов
- Сравнение С99 с С89. Общее впечатление
- Глава 12. Редактирование связей, использование библиотек и заголовков
- Глава 13. Функции ввода / вывода
- clearerr
- fclose
- feof
- ferror
- fflush
- fgetc
- fgetpos
- fgets
- fopen
- fprintf
- fputc
- fputs
- fread
- freopen
- fscanf
- fseek
- fsetpos
- ftell
- fwrite
- getc
- getchar
- gets
- perror
- printf
- putc
- putchar
- puts
- remove
- rename
- rewind
- scanf
- setbuf
- setvbuf
- snprintf
- sprintf
- sscanf
- tmpfile
- tmpnam
- ungetc
- vprintf, vfprintf, vsprintf, vsnprintf
- vscanf, vfscanf, vsscanf
- clearerr
- Глава 14. Строковые и символьные функции
- isalnum
- isalpha
- isblank
- iscntrl
- isdigit
- isgraph
- islower
- isprint
- ispunct
- isspace
- isupper
- isxdigit
- memchr
- memcmp
- memcpy
- memmove
- memset
- strcat
- strchr
- strcmp
- strcoll
- strcpy
- strcspn
- strerror
- strlen
- strncat
- strncmp
- strncpy
- strpbrk
- strrchr
- strspn
- strstr
- strtok
- strxfrm
- tolower
- toupper
- isalnum
- Глава 15. Математические фукции
- acos
- acosh
- asin
- asinh
- atan
- atan2
- atanh
- cbrt
- ceil
- copysign
- cos
- cosh
- erf
- erfc
- exp
- exp2
- expm1
- fabs
- fdim
- floor
- fma
- fmax
- fmin
- fmod
- frexp
- hypot
- ilogb
- ldexp
- lgamma
- llrint
- llround
- log
- log10
- log1p
- log2
- logb
- lrint
- lround
- modf
- nan
- nearbyint
- nextafter
- nexttoward
- pow
- remainder
- remquo
- rint
- round
- scalbln
- scalbn
- sin
- sinh
- sqrt
- tan
- tanh
- tgamma
- trunc
- acos
- Глава 16. Функции времени, даты и локализации
- Глава 17. Функции динамического распределения памяти
- Глава 18. Служебные функции
- abort
- abs
- assert
- atexit
- atof
- atoi
- atol
- atoll
- bsearch
- div
- exit
- _Exit
- getenv
- labs
- llabs
- ldiv
- lldiv
- longjmp
- mblen
- mbstowcs
- mbtowc
- qsort
- raise
- rand
- setjmp
- signal
- srand
- strtod
- strtof
- strtol
- strtold
- strtoll
- strtoul
- strtoull
- system
- va_arg, va_start, va_end, va_copy
- wcstombs
- wctomb
- abort
- Глава 19. Функции обработки двухбайтовых символов
- Функции классификации двухбайтовых символов
- Функции ввода-вывода двухбайтовых символов
- Функции для операций над строками двухбайтовых символов
- Преобразование строк двухбайтовых символов
- Функции для обработки массивов двухбайтовых символов
- Функции для преобразования многобайтовых и двухбайтовых символов
- Функции классификации двухбайтовых символов
- Глава 20. Библиотечные средства добавленные в версии C99
- Библиотека поддержки арифметических операций с комплексными числами
- Библиотека поддержки среды вычислений с плавающей точкой
- Заголовок <stdint.h>
- Функции для преобразования формата целочисленных значений
- Математические макросы обобщенного типа
- Заголовок <stdbool.h>
- Библиотека поддержки арифметических операций с комплексными числами
- Глава 21. Сортировка и поиск
- Сортировка
- Классы алгоритмов сортировки
- Оценка алгоритмов сортировки
- Пузырьковая сортировка
- Сортировка посредством выбора
- Сортировка вставками
- Улучшенные алгоритмы сортировки
- Выбор метода сортировки
- Сортировка других структур данных
- Сортировка дисковых файлов с произвольной выборкой
- Поиск
- Сортировка
- Глава 22. Очереди, стеки, связанные списки и деревья
- Очереди
- Циклическая очередь
- Стеки
- Связанные списки
- Односвязные списки
- Двусвязные списки
- Пример списка рассылки
- Двоичные деревья
- Очереди
- Глава 23. Разреженные массивы
- Зачем нужны разреженные массивы?
- Представление разреженного массива в виде связного списка
- Представление разреженного массива в виде двоичного дерева
- Представление разреженного массива в виде массива указателей
- Хэширование
- Выбор метода
- Зачем нужны разреженные массивы?
- Глава 24. Синтаксичекий разбор и вычисление выражений
- Выражения
- Разбиение выражения на лексемы
- Разбор выражений
- Простая программа синтаксического анализа выражений
- Работа с переменными в анализаторе
- Проверка синтаксиса в рекурсивном нисходящем анализаторе
- Выражения
- Глава 25. Решение задач с помощью искусственного интелекта
- Представление и термилогия
- Комбинаторные взрывы
- Методы поиска
- Оценка поиска
- Представление в виде графа
- Поиск в глубину
- Полные перебор, или поиск в ширину
- Добавление эвристики
- Поиск методом наискорейшего подъема
- Поиск и использованием частичного пути минимальной стоимости
- Выбор метода поиска
- Поиск нескольких решений
- Поиск «оптимального» решения
- И снова возвращаемся к поиску потерянных ключей
- Представление и термилогия
- Глава 26. Создание скелета приложения для Windows 2000
- Общая картина специфики программирования для Windows 2000
- Интерфейс прикладного программирования Win32
- Компоненты окна
- Взаимодействие прикладных программ с Windows
- Базовые концепции функционирования приложений для Windows 2000
- Скелет программы для Windows 2000
- Файл описания больше не нужен
- Соглашение об именовании
- Общая картина специфики программирования для Windows 2000
- Глава 27. Проектирование программ с помощью C
- Проектирование сверху вниз
- «Пуленепробиваемые» функции
- Использование программы MAKE
- Применение интегрированной среды разработки
- Проектирование сверху вниз
- Глава 28. Производительность, переносимость и отладка
- Глава 29. Интерпретатор языка C
- Практическое значение интерпретатора
- Определение языка Little C
- Интерпретация структурированного языка
- Неформальная теория языка С
- Синтаксический анализатор выражений
- Интерпретатор Little C
- Библиотечные функции Little C
- Компиляция и компановка интерпретатора Little C
- Демонстрация Little C
- Усовершенствование интерпретатора Little C
- Расширение Little C
- Практическое значение интерпретатора