Главная » 2020»Июнь»7 » Дейтел П., Дейтел Х. - C для программистов с введением в C11 (2014)
16:07
Дейтел П., Дейтел Х. - C для программистов с введением в C11 (2014)
В книге рассказывается о языке C и стандартной библиотеке C, следуя девизу компании Deitel: «обучение на действующих примерах». Понятия представляются в контексте тщательно протестированных программ, с выделением синтаксиса, демонстрацией вывода программ и подробного их обсуждения. Приводится примерно 5 000 строк кода на языке C и даются сотни полезных советов, которые помогут вам создавать надежные приложения. Рассматривается создание собственных структур данных и стандартная библиотека, безопасное программирование на C; описываются особенности новой ревизии стандарта С11, в т. ч. многопоточность. Закончив чтение, вы будете иметь все знания, необходимые для создания приложений на языке C промышленного уровня. Издание предназначено программистам, имеющим опыт работы на высокоуровневых языках.
Предисловие ....................................................................................................15 1 Введение .....................................................................................................23 1.1 Введение ..............................................................................................................24 1.2 Язык программирования C .............................................................................24 1.3 Стандартная библиотека .................................................................................26 1.4 C++ и другие C-подобные языки .................................................................27 1.5 Типичная среда разработки приложений на языке C .............................28 1.5.1 Фаза 1: создание программы ...............................................................29 1.5.2 Фазы 2 и 3: препроцессинг и компиляция программы ................30 1.5.3 Фаза 4: компоновка ................................................................................30 1.5.4 Фаза 5: загрузка .......................................................................................31 1.5.5 Фаза 6: выполнение ...............................................................................31 1.5.6 Потоки стандартного ввода, стандартного вывода и стандартного вывода ошибок ..........................................................31 1.6 Пробное приложение на языке C для Windows, Linux и Mac OS X ....32 1.6.1 Запуск приложения из командной строки в Windows .................33 1.6.2 Запуск приложения в Linux .................................................................36 1.6.3 Запуск приложения в Mac OS X.........................................................39 1.7 Операционные системы ..................................................................................42 1.7.1 Windows – коммерческая операционная система ..........................42 1.7.2 Linux – открытая операционная система .........................................42 1.7.3 Apple Mac OS X, Apple iOS® для устройств iPhone®, iPad® и iPod Touch® ...........................................................................................43 1.7.4 Google Android ........................................................................................44 2 Введение в программирование на C ..............................45 2.1 Введение ..............................................................................................................46 2.2 Простая программа на C: вывод строки текста .........................................46 2.3 Еще одна простая программа на C: сложение двух целых чисел ..........51 2.4 Арифметические операции в языке C............................................................. 56 2.5 Принятие решений: операторы сравнения ................................................60 2.6 Безопасное программирование на C ...........................................................65 Содержание 7 3 Управляющие инструкции: часть I ..................................67 3.1 Введение ..............................................................................................................68 3.2 Управляющие структуры ................................................................................68 3.3 Инструкция выбора if .....................................................................................70 3.4 Инструкция выбора if...else ............................................................................71 3.5 Инструкция повторения while ......................................................................75 3.6 Определение средней оценки с помощью инструкции повторения, управляемой счетчиком ...........................................................76 3.7 Определение средней оценки с помощью инструкции повторения, управляемой сигнальным значением ...................................77 3.8 Вложенные управляющие инструкции ........................................................... 81 3.9 Операторы присваивания ...............................................................................84 3.10 Операторы инкремента и декремента .........................................................85 3.11 Безопасное программирование на C ...........................................................87 4 Управляющие инструкции: часть II ................................91 4.1 Введение ..............................................................................................................92 4.2 Основы повторения..........................................................................................92 4.3 Повторение со счетчиком ..............................................................................93 4.4 Инструкция повторения for ...........................................................................95 4.5 Инструкция for: замечания .............................................................................98 4.6 Примеры использования инструкции for .................................................99 4.7 Инструкция множественного выбора switch ..........................................103 4.8 Инструкция повторения do…while ............................................................110 4.9 Инструкции break и continue ......................................................................112 4.10 Логические операторы ..................................................................................114 4.11 Путаница между операторами равенства (==) и присваивания (=) .....118 4.12 Безопасное программирование на C .........................................................120 5 Функции .................................................................................................122 5.1 Введение ............................................................................................................123 5.2 Модульное программирование на языке C ..............................................123 5.3 Функции из математической библиотеки ................................................125 5.4 Функции .............................................................................................................126 5.5 Определение функций ..................................................................................127 5.6 Прототипы функций: обсуждение деталей .............................................132 5.7 Стек вызовов функций и кадры стека ........................................................135 5.8 Заголовочные файлы .....................................................................................138 5.9 Передача аргументов по значению и по ссылке ....................................141 8 Содержание 5.10 Генератор случайных чисел .........................................................................141 5.11 Пример: игра в кости .....................................................................................147 5.12 Классы хранения .............................................................................................151 5.13 Правила видимости ........................................................................................153 5.14 Рекурсия .............................................................................................................157 5.15 Пример использования рекурсии: числа Фибоначчи ...........................161 5.16 Рекурсия и итерации ......................................................................................165 5.17 Безопасное программирование на C .........................................................167 6 Массивы..................................................................................................168 6.1 Введение ............................................................................................................169 6.2 Массивы .............................................................................................................169 6.3 Определение массивов ..................................................................................171 6.4 Примеры массивов ..........................................................................................171 6.5 Передача массивов функциям .....................................................................185 6.6 Сортировка массивов .....................................................................................190 6.7 Пример: вычисление математического ожидания, медианы и моды ................................................................................................................193 6.8 Поиск в массивах .............................................................................................197 6.9 Многомерные массивы ..................................................................................203 6.10 Массивы переменной длины ........................................................................210 6.11 Безопасное программирование на C .........................................................213 7 Указатели ................................................................................................216 7.1 Введение ............................................................................................................217 7.2 Переменные-указатели, определение и инициализация ......................217 7.3 Операторы указателей ...................................................................................219 7.4 Передача аргументов функциям по ссылке..............................................221 7.5 Использование квалификатора const с указателями .............................224 7.5.1 Преобразование строк в верхний регистр с использованием изменяемого указателя на изменяемые данные ...........................227 7.5.2 Вывод строки по одному символу с использованием изменяемого указателя на константные данные ...........................228 7.5.3 Попытка изменить константный указатель на изменяемые данные .....................................................................................................231 7.5.4 Попытка изменить константный указатель на константные данные .....................................................................................................231 7.6 Пузырьковая сортировка с передачей аргументов по ссылке .............232 7.7 Оператор sizeof ...............................................................................................236 7.8 Выражения с указателями и арифметика указателей .............................238 Содержание 9 7.9 Связь между указателями и массивами.......................................................242 7.10 Массивы указателей ........................................................................................246 7.11 Пример: тасование и раздача карт ..............................................................247 7.12 Указатели на функции ...................................................................................251 7.13 Безопасное программирование на C .........................................................256 8 Символы и строки.........................................................................258 8.1 Введение ............................................................................................................259 8.2 Основы работы со строками и символами ...............................................259 8.3 Библиотека функций для работы с символами ......................................262 8.3.1 Функции isdigit, isalpha, isalnum и isxdigit ......................................263 8.3.2 Функции islower, isupper, tolower и toupper ...................................265 8.3.3 Функции isspace, iscntrl, ispunct, isprint и isgraph .........................266 8.4 Функции преобразования строк ..................................................................268 8.4.1 Функция strtod.......................................................................................268 8.4.2 Функция strtol ........................................................................................269 8.4.3 Функция strtoul......................................................................................270 8.5 Стандартная библиотека ввода/вывода.....................................................271 8.5.1 Функции fgets и putchar ......................................................................271 8.5.2 Функция getchar ....................................................................................274 8.5.3 Функция sprintf .....................................................................................274 8.5.4 Функция sscanf ......................................................................................275 8.6 Функции для работы со строками .............................................................276 8.6.1 Функции strcpy и strncpy ....................................................................277 8.6.2 Функции strcat и strncat ......................................................................278 8.7 Функции сравнения строк .............................................................................279 8.8 Функции поиска в строках ............................................................................281 8.8.1 Функция strchr .......................................................................................282 8.8.2 Функция strcspn ....................................................................................282 8.8.3 Функция strpbrk ....................................................................................283 8.8.4 Функция strrchr .....................................................................................283 8.8.5 Функция strspn ......................................................................................284 8.8.6 Функция strstr ........................................................................................285 8.8.7 Функция strtok .......................................................................................285 8.9 Функции для работы с памятью ..................................................................287 8.9.1 Функция memcpy ..................................................................................288 8.9.2 Функция memmove ..............................................................................288 8.9.3 Функция memcmp ................................................................................289 8.9.4 Функция memchr ..................................................................................290 8.9.5 Функция memset ...................................................................................290 10 Содержание 8.10 Прочие функции для работы со строками ..............................................291 8.10.1 Функция strerror ..................................................................................291 8.10.2 Функция strlen .....................................................................................292 8.11 Безопасное программирование на C ........................................................292 9 Форматированный ввод/вывод ...................................... 294 9.1 Введение ............................................................................................................295 9.2 Потоки данных ................................................................................................295 9.3 Форматированный вывод с помощью printf ...........................................296 9.4 Вывод целых чисел .........................................................................................296 9.5 Вывод вещественных чисел ..........................................................................298 9.6 Вывод строк и символов ...............................................................................300 9.7 Прочие спецификаторы формата ..............................................................301 9.8 Вывод с указанием ширины поля и точности .........................................302 9.9 Использование флагов в строке формата функции printf ................305 9.10 Вывод литералов и экранированных последовательностей ................307 9.11 Чтение форматированного ввода с помощью функции scanf ..........308 9.12 Безопасное программирование на C .........................................................315 10 Структуры, объединения, перечисления и поразрядные операции .......................................................316 10.1 Введение ............................................................................................................317 10.2 Определение структур ...................................................................................318 10.2.1 Структуры со ссылками на самих себя ..........................................318 10.2.2 Определение переменных структурных типов ..........................319 10.2.3 Имена структур ...................................................................................319 10.2.4 Операции над структурами .............................................................320 10.3 Инициализация структур ..............................................................................321 10.4 Доступ к полям структур ...............................................................................321 10.5 Передача структур функциям ......................................................................323 10.6 typedef ................................................................................................................324 10.7 Пример: высокопроизводительная программа перемешивания и раздачи колоды карт ...................................................................................325 10.8 Объединения ....................................................................................................327 10.8.1 Объявление объединений ...............................................................328 10.8.2 Операции над объединениями .......................................................328 10.8.3 Инициализация объединений в объявлениях ............................328 10.8.4 Демонстрация объединений ...........................................................329 10.9 Поразрядные операторы ...............................................................................330 10.9.1 Вывод целых чисел без знака в двоичном представлении ......331 Содержание 11 10.9.2 Повышение переносимости и масштабируемости функции displayBits ...........................................................................333 10.9.3 Поразрядные операторы «И», «ИЛИ», исключающее «ИЛИ» и дополнение .......................................................................334 10.9.4 Использование операторов поразрядного сдвига влево и вправо ...............................................................................................337 10.9.5 Операторы поразрядного присваивания .....................................339 10.10 Битовые поля .................................................................................................340 10.11 Константы-перечисления ...........................................................................343 10.12 Безопасное программирование на C .......................................................345 11 Файлы .....................................................................................................347 11.1 Введение ..........................................................................................................348 11.2 Файлы и потоки данных .............................................................................348 11.3 Создание файла с последовательным доступом ..................................349 11.4 Чтение данных из файла с последовательным доступом ..................355 11.5 Произвольный доступ к файлам ..............................................................360 11.6 Создание файла с произвольным доступом .........................................361 11.7 Запись данных в файл с произвольным доступом ..............................363 11.8 Чтение данных из файла с произвольным доступом .........................366 11.9 Пример: реализация программы для работы со счетами ...................368 11.10 Безопасное программирование на C .......................................................373 12 Структуры данных .....................................................................375 12.1 Введение ..........................................................................................................376 12.2 Структуры, ссылающиеся на себя самих ................................................377 12.3 Динамическое выделение памяти ............................................................377 12.4 Связанные списки .........................................................................................379 12.4.1 Функция insert ...................................................................................385 12.4.2 Функция delete ..................................................................................387 12.4.3 Функция printList .............................................................................388 12.5 Стеки ................................................................................................................388 12.5.1 Функция push ....................................................................................392 12.5.2 Функция pop ......................................................................................393 12.5.3 Области применения стеков .........................................................394 12.6 Очереди ...........................................................................................................395 12.6.1 Функция enqueue ..............................................................................399 12.6.2 Функция dequeue ..............................................................................400 12.7 Деревья ............................................................................................................401 12.7.1 Функция insertNode .........................................................................405 12 Содержание 12.7.2 Обход дерева: функции inOrder, preOrder и postOrder ........406 12.7.3 Удаление дубликатов ......................................................................407 12.7.4 Поиск в двоичных деревьях ..........................................................407 12.8 Безопасное программирование на C .......................................................407 13 Препроцессор ................................................................................409 13.1 Введение ..........................................................................................................410 13.2 Директива препроцессора #include ........................................................410 13.3 Директива препроцессора #defi ne: символические константы .......411 13.4 Директива препроцессора #defi ne: макросы ........................................412 13.5 Условная компиляция .................................................................................414 13.6 Директивы препроцессора #error и #pragma .....................................416 13.7 Операторы # и ## .....................................................................................416 13.8 Номера строк .................................................................................................417 13.9 Предопределенные символические константы ....................................418 13.10 Утверждения ..................................................................................................418 13.11 Безопасное программирование на C .....................................................419 14 Разное ......................................................................................................420 14.1 Введение ..........................................................................................................421 14.2 Перенаправление ввода/вывода ...............................................................421 14.3 Функции с переменным количеством аргументов ...............................422 14.4 Использование аргументов командной строки ....................................425 14.5 Замечания о компиляции программ из нескольких исходных файлов .............................................................................................................426 14.6 Завершение выполнения программ с помощью функций exit и atexit ..............................................................................................................429 14.7 Окончания в литералах целых и вещественных чисел ......................430 14.8 Обработка сигналов .....................................................................................431 14.9 Динамическое выделение памяти: функции calloc и realloc .............433 14.10 Безусловные переходы с помощью goto ...............................................434 А Таблица предшествования операторов ................ 437 В Набор символов ASCII ........................................................... 439 С Системы счисления .................................................................. 440 C.1 Введение ..........................................................................................................441 C.2 Преобразование двоичных чисел в восьмеричное и шестнадцатеричное представление .....................................................444 Содержание 13 C.3 Преобразование восьмеричных и шестнадцатеричных чисел в двоичное представление ............................................................................446 C.4 Преобразование двоичных, восьмеричных и шестнадцатеричных чисел в десятичное представление ..................446 C.5 Преобразование десятичных чисел в двоичное, восьмеричное и шестнадцатеричное представление ........................................................447 C.6 Отрицательные двоичные числа: нотация дополнения до двух .......449 D Сортировка: взгляд в глубину ............................................451 D.1 Введение ............................................................................................................452 D.2 Нотация «Большое О» ...................................................................................452 D.3 Сортировка методом выбора........................................................................454 D.4 Сортировка методом вставки .......................................................................457 D.5 Сортировка методом слияния ......................................................................461 E Дополнительные особенности стандарта C ........ 468 E.1 Введение ............................................................................................................469 E.2 Поддержка положений ревизии C99 .........................................................470 E.3 Заголовочные файлы в C99 ........................................................................470 E.4 Включение объявлений в выполняемый код ..........................................471 E.5 Объявление переменных в заголовках инструкций for ........................472 E.6 Назначенные инициализаторы и составные литералы ........................473 E.7 Тип bool .............................................................................................................476 E.8 Неявный тип int в объявлениях функций ................................................477 E.9 Комплексные числа ........................................................................................479 E.10 Массивы переменной длины ........................................................................480 E.11 Дополнительные возможности препроцессора .....................................483 E.12 Другие особенности, определяемые ревизией C99 ..............................485 E.12.1 Минимальные требования компилятора к ресурсам .............485 E.12.2 Ключевое слово restrict ................................................................485 E.12.3 Надежное целочисленное деление ...........................................486 E.12.4 Гибкие члены-массивы .................................................................486 E.12.5 Ослабление ограничений в составных инициализаторах ............................................................................487 E.12.6 Математические операции обобщенного типа .....................487 E.12.7 Встраиваемые функции ................................................................488 E.12.8 Инструкция return без выражения ..............................................488 E.12.9 Предопределенный идентификатор __func__ ......................488 E.12.10 Макрос va_copy ...............................................................................489 E.13 Новые особенности в ревизии C11 ...........................................................489 14 Содержание E.13.1 Новые заголовочные файлы в C11 .............................................489 E.13.2 Поддержка многопоточной модели выполнения ..................490 E.13.3 Функция quick_exit ..........................................................................498 E.13.4 Поддержка Unicode® .......................................................................498 E.13.5 Спецификатор функций _Noreturn ...........................................499 E.13.6 Выражения обобщенного типа ...................................................499 E.13.7 Annex L: анализируемость и неопределенное поведение ....499 E.13.8 Анонимные структуры и объединения .....................................500 E.13.9 Управление выравниванием в памяти .......................................501 E.13.10 Статические утверждения ..............................................................501 E.13.11 Вещественные типы .......................................................................501 E.14 Веб-ресурсы ......................................................................................................501 F Отладчик Visual Studio ..............................................................505 F.1 Введение ............................................................................................................506 F.2 Точки останова и команда Continue...........................................................506 F.3 Окна Locals и Watch ......................................................................................511 F.4 Управление выполнением с помощью команд Step Into, Step Over, Step Out и Continue .....................................................................514 F.5 Окно Autos .......................................................................................................517 G Отладчик GNU ..................................................................................518 G.1 Введение ............................................................................................................519 G.2 Точки останова и команды run, stop, continue и print ...........................519 G.3 Команды print и set .........................................................................................525 G.4 Управление выполнением с помощью команд step, fi nish и next ......527 G.5 Команда watch ..................................................................................................530 Алфавитный указатель .......................................................................533
Название: C для программистов с введением в C11 Автор: Дейтел П., Дейтел Х. Год: 2014 Жанр: программирование Издательство: ДМК Пресс Язык: Русский
Формат: pdf Качество: eBook Страниц: 546 Размер: 12 MB
Скачать Дейтел П., Дейтел Х. - C для программистов с введением в C11 (2014)