Дейтел П., Дейтел Х. - 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
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)
Наш сайт не предоставляет ссылки на скачивание |
Наш сайт не предоставляет ссылки на скачивание |
Наш сайт не предоставляет ссылки на скачивание |
Ключевые теги: программирование, книги, C для программистов с введением в C11
Другие новости по теме:
Панель управления
Реклама
Архив сайта
Октябрь 2023 (1)Сентябрь 2023 (15)
Ноябрь 2022 (9)
Октябрь 2022 (27)
Сентябрь 2022 (53)
Июль 2022 (70)
Июнь 2022 (100)
Май 2022 (198)
Апрель 2022 (63)
Март 2022 (5)
Февраль 2022 (82)
Январь 2022 (191)
Декабрь 2021 (101)
Ноябрь 2021 (13)
Октябрь 2021 (28)
Сентябрь 2021 (16)
Август 2021 (18)
Июль 2021 (24)
Июнь 2021 (5)
Апрель 2021 (12)
Март 2021 (11)
Февраль 2021 (1)
Январь 2021 (14)
Декабрь 2020 (11)
Ноябрь 2020 (68)
Октябрь 2020 (102)
Сентябрь 2020 (267)
Август 2020 (273)
Июль 2020 (204)
Июнь 2020 (278)
Май 2020 (420)
Апрель 2020 (302)
Март 2020 (85)
Февраль 2020 (78)
Январь 2020 (272)
Декабрь 2019 (143)
Ноябрь 2019 (209)
Октябрь 2019 (296)
Сентябрь 2019 (340)
Август 2019 (289)
Июль 2019 (338)
Июнь 2019 (299)
Май 2019 (125)
Апрель 2019 (461)
Март 2019 (471)
Февраль 2019 (343)
Январь 2019 (298)
Декабрь 2018 (279)
Ноябрь 2018 (170)
Октябрь 2018 (216)
Сентябрь 2018 (142)
Август 2018 (70)
Июль 2018 (110)
Июнь 2018 (141)
Май 2018 (215)
Апрель 2018 (178)
Март 2018 (203)
Февраль 2018 (132)
Январь 2018 (179)
Декабрь 2017 (317)
Ноябрь 2017 (320)
Октябрь 2017 (109)
Сентябрь 2017 (163)
Август 2017 (218)
Июль 2017 (295)
Июнь 2017 (231)
Май 2017 (219)
Апрель 2017 (174)
Март 2017 (414)
Февраль 2017 (593)
Январь 2017 (1130)
Декабрь 2016 (912)
Ноябрь 2016 (962)
Октябрь 2016 (915)
Сентябрь 2016 (651)
Август 2016 (392)
Июль 2016 (496)
Июнь 2016 (483)
Май 2016 (693)
Апрель 2016 (961)
Март 2016 (573)
Февраль 2016 (1035)
Январь 2016 (373)
Декабрь 2015 (198)
Ноябрь 2015 (91)
Октябрь 2015 (4)
Сентябрь 2015 (237)
Август 2015 (8)
Июль 2015 (799)
Июнь 2015 (1668)
Май 2015 (856)
Апрель 2015 (1845)
Март 2015 (1235)
Февраль 2015 (1)
Декабрь 2014 (6)
Ноябрь 2014 (11)
Октябрь 2014 (8)
Сентябрь 2014 (258)
Август 2014 (19848)
Июль 2014 (21203)
Июнь 2014 (22780)
Май 2014 (23904)
Апрель 2014 (21761)
Март 2014 (19579)
Февраль 2014 (17891)
Январь 2014 (23195)
Декабрь 2013 (16543)
Ноябрь 2013 (354)
Октябрь 2013 (475)
Сентябрь 2013 (408)
Август 2013 (243)
Июль 2013 (160)
Июнь 2013 (727)
Май 2013 (700)
Апрель 2013 (614)
Март 2013 (732)
Февраль 2013 (500)
Январь 2013 (584)
Декабрь 2012 (549)
Ноябрь 2012 (1154)
Октябрь 2012 (783)
Сентябрь 2012 (1154)
Август 2012 (624)
Июль 2012 (1114)
Июнь 2012 (1246)
Май 2012 (2941)
Апрель 2012 (3200)
Март 2012 (1359)
Январь 2012 (484)
Ноябрь 2011 (1692)
Октябрь 2011 (3643)
Сентябрь 2011 (2220)
Август 2011 (1770)
Июль 2011 (3102)
Июнь 2011 (1511)
Май 2011 (528)
Апрель 2011 (538)
Март 2011 (607)
Февраль 2011 (106)
Январь 2011 (2)
Октябрь 2010 (43)
Сентябрь 2010 (130)
Август 2010 (38)
Июль 2010 (44)
Март 2010 (63)
Февраль 2010 (192)
Январь 2010 (92)
Декабрь 2009 (110)
Май 2022 (198)
Апрель 2022 (63)
Март 2022 (5)
Февраль 2022 (82)
Январь 2022 (191)
Декабрь 2021 (101)
Ноябрь 2021 (13)
Октябрь 2021 (28)
Сентябрь 2021 (16)
Август 2021 (18)
Июль 2021 (24)
Июнь 2021 (5)
Апрель 2021 (12)
Март 2021 (11)
Февраль 2021 (1)
Январь 2021 (14)
Декабрь 2020 (11)
Ноябрь 2020 (68)
Октябрь 2020 (102)
Сентябрь 2020 (267)
Август 2020 (273)
Июль 2020 (204)
Июнь 2020 (278)
Май 2020 (420)
Апрель 2020 (302)
Март 2020 (85)
Февраль 2020 (78)
Январь 2020 (272)
Декабрь 2019 (143)
Ноябрь 2019 (209)
Октябрь 2019 (296)
Сентябрь 2019 (340)
Август 2019 (289)
Июль 2019 (338)
Июнь 2019 (299)
Май 2019 (125)
Апрель 2019 (461)
Март 2019 (471)
Февраль 2019 (343)
Январь 2019 (298)
Декабрь 2018 (279)
Ноябрь 2018 (170)
Октябрь 2018 (216)
Сентябрь 2018 (142)
Август 2018 (70)
Июль 2018 (110)
Июнь 2018 (141)
Май 2018 (215)
Апрель 2018 (178)
Март 2018 (203)
Февраль 2018 (132)
Январь 2018 (179)
Декабрь 2017 (317)
Ноябрь 2017 (320)
Октябрь 2017 (109)
Сентябрь 2017 (163)
Август 2017 (218)
Июль 2017 (295)
Июнь 2017 (231)
Май 2017 (219)
Апрель 2017 (174)
Март 2017 (414)
Февраль 2017 (593)
Январь 2017 (1130)
Декабрь 2016 (912)
Ноябрь 2016 (962)
Октябрь 2016 (915)
Сентябрь 2016 (651)
Август 2016 (392)
Июль 2016 (496)
Июнь 2016 (483)
Май 2016 (693)
Апрель 2016 (961)
Март 2016 (573)
Февраль 2016 (1035)
Январь 2016 (373)
Декабрь 2015 (198)
Ноябрь 2015 (91)
Октябрь 2015 (4)
Сентябрь 2015 (237)
Август 2015 (8)
Июль 2015 (799)
Июнь 2015 (1668)
Май 2015 (856)
Апрель 2015 (1845)
Март 2015 (1235)
Февраль 2015 (1)
Декабрь 2014 (6)
Ноябрь 2014 (11)
Октябрь 2014 (8)
Сентябрь 2014 (258)
Август 2014 (19848)
Июль 2014 (21203)
Июнь 2014 (22780)
Май 2014 (23904)
Апрель 2014 (21761)
Март 2014 (19579)
Февраль 2014 (17891)
Январь 2014 (23195)
Декабрь 2013 (16543)
Ноябрь 2013 (354)
Октябрь 2013 (475)
Сентябрь 2013 (408)
Август 2013 (243)
Июль 2013 (160)
Июнь 2013 (727)
Май 2013 (700)
Апрель 2013 (614)
Март 2013 (732)
Февраль 2013 (500)
Январь 2013 (584)
Декабрь 2012 (549)
Ноябрь 2012 (1154)
Октябрь 2012 (783)
Сентябрь 2012 (1154)
Август 2012 (624)
Июль 2012 (1114)
Июнь 2012 (1246)
Май 2012 (2941)
Апрель 2012 (3200)
Март 2012 (1359)
Январь 2012 (484)
Ноябрь 2011 (1692)
Октябрь 2011 (3643)
Сентябрь 2011 (2220)
Август 2011 (1770)
Июль 2011 (3102)
Июнь 2011 (1511)
Май 2011 (528)
Апрель 2011 (538)
Март 2011 (607)
Февраль 2011 (106)
Январь 2011 (2)
Октябрь 2010 (43)
Сентябрь 2010 (130)
Август 2010 (38)
Июль 2010 (44)
Март 2010 (63)
Февраль 2010 (192)
Январь 2010 (92)
Декабрь 2009 (110)