Скачать бесплатно студент МЭИ, ИВТИ (АВТИ), Информационные технологии, Книга, 1 курс, 1 семестр, *.pdf

Pointers On C - Указатели в Си, А. Рик (2022) халява проверен

ВУЗ: МЭИ (Московский энергетический институт)
Факультет: ИВТИ (АВТИ) (Институт информационных и вычислительных технологий)
Предмет: Информационные технологии
Тип документа: Книга
Формат файла: .pdf
Размер: 8.703 Мб

Добавлен: 10.03.2022 11:41:10

Книга Pointers On C, предназначенная для профессионалов и студентов старших
курсов, представляет собой всеобъемлющий ресурс для тех, кому необходимо
углубленное изучение языка программирования Си. Обстоятельное объяснение
основ указателей и подробное изучение их расширенных возможностей
позволяет программистам использовать возможности указателей в своих
программах на языке Си. Полный охват, подробное объяснение идиом
программирования на языке Си и тщательное обсуждение продвинутых тем
делает Pointers On C ценным учебником и справочником как для студентов, так
и для профессионалов.

Об авторе
Кеннет А. Рик, профессор компьютерных наук Рочестерского технологического
института, является опытным программистом на языке Си, работавшим
консультантом в местных промышленных предприятиях. Этот текст родился в
результате девятилетнего преподавания семинара по программированию на
языке Си. Профессор Рик читал курсы вводного и среднего уровня по
операционным системам, передаче данных, компьютерным сетям, формальным
языкам, анализу алгоритмов и системам коммутации.

Оглавление
Предисловие переводчика.........................................................................................13
Предисловие...............................................................................................................14
Об авторе....................................................................................................................14
1 Первые шаги............................................................................................................14
1.1 Введение...........................................................................................................14
1.1.1 Пробелы и комментарии..........................................................................20
1.1.2 Директивы препроцессора.......................................................................22
1.1.3 Функция main............................................................................................24
1.1.4 Функция read_column_numbers...............................................................28
1.1.5 Функция rearrange.....................................................................................37
1.2 Другие возможности.......................................................................................41
1.3 Компиляция......................................................................................................41
1.4 Резюме..............................................................................................................42
1.5 Краткое изложение предостережений...........................................................43
1.6 Краткое изложение советов по программированию.....................................43
1.7 Вопросы............................................................................................................44
1.8 Упражнения по программированию..............................................................45
2 Основные понятия..................................................................................................47
2.1 Среды................................................................................................................47
2.1.1 Трансляция................................................................................................47
2.1.2 Выполнение...............................................................................................51
2.2 Лексические правила.......................................................................................52
2.2.1 Символы....................................................................................................53
2.2.2 Комментарии.............................................................................................55
2.2.3 Исходный код в свободной форме..........................................................57
2.2.4 Идентификаторы.......................................................................................58
2.2.5 Форма программы....................................................................................58
2.3 Стиль программы.............................................................................................59
2.4 Резюме..............................................................................................................62
2.5 Краткое описание предостережений..............................................................62
2.6 Краткое изложение советов по программированию.....................................63
2.7 Вопросы............................................................................................................63
2.8 Упражнения по программированию..............................................................66
3 Данные.....................................................................................................................66
3.1 Основные типы данных..................................................................................67
3.1.1 Семейство целых чисел...........................................................................672
3.1.2 Типы с плавающей точкой.......................................................................74
3.1.3 Указатели...................................................................................................75
3.2 Базовые объявления.........................................................................................79
3.2.1 Инициализация.........................................................................................80
3.2.2 Объявление простых массивов................................................................81
3.2.3 Объявление указателей............................................................................82
3.2.4 Неявные объявления.................................................................................84
3.3 typedef...............................................................................................................85
3.4 Константы.........................................................................................................86
3.5 Область видимости..........................................................................................89
3.5.1 Область видимости блок..........................................................................89
3.5.2 Область видимости файл.........................................................................91
3.5.3 Область видимости прототип..................................................................92
3.5.4 Область видимости функции...................................................................92
3.6 Связывание.......................................................................................................93
3.7 Класс хранения................................................................................................95
3.7.1 Инициализация.........................................................................................98
3.8 Ключевое слово static......................................................................................99
3.9 Пример области видимости, связывания и класса хранения....................100
3.10 Резюме..........................................................................................................103
3.11 Краткое описание предостережений..........................................................105
3.12 Краткое изложение советов по программированию.................................105
3.13 Вопросы........................................................................................................106
4 Инструкции...........................................................................................................112
4.1 Пустая инструкция........................................................................................112
4.2 Инструкция-выражение................................................................................113
4.3 Блоки инструкций..........................................................................................114
4.4 Инструкция if.................................................................................................115
4.5 Инструкция while...........................................................................................117
4.5.1 Инструкции break и continue..................................................................118
4.5.2 Выполнение цикла while........................................................................118
4.6 Инструкция for...............................................................................................120
4.6.1 Выполнение инструкции for..................................................................121
4.7 Инструкция do................................................................................................123
4.8 Инструкция switch.........................................................................................124
4.8.1 break в switch...........................................................................................125
4.8.2 По умолчанию.........................................................................................127
4.8.3 Выполнение switch.................................................................................1283
4.9 Инструкции goto............................................................................................129
4.10 Резюме..........................................................................................................132
4.11 Краткое описание предостережений..........................................................133
4.12 Краткое изложение советов по программированию.................................133
4.13 Вопросы........................................................................................................134
4. 14 Упражнения по программированию.........................................................137
5 Операторы и выражения......................................................................................141
5.1 Операторы......................................................................................................141
5.1.1 Арифметика.............................................................................................141
5.1.2 Сдвиг........................................................................................................142
5.1.3 Побитовые операторы............................................................................144
5.1.4 Присваивание..........................................................................................146
5.1.5 Унарные операторы................................................................................150
5.1.6 Реляционные операторы........................................................................154
5.1.7 Логические операторы...........................................................................157
5.1.8 Условный оператор.................................................................................159
5.1.9 Оператор запятая....................................................................................161
5.1.10 Оператор индексации, вызов функции и член структуры................162
5.2 Булевы значения.............................................................................................163
5.3 L-значения и R-значения (L-values и R-values)...........................................166
5.4 Вычисление выражений................................................................................168
5.4.1 Неявные преобразования типов............................................................168
5.4.2 Арифметические преобразования.........................................................169
5.4.3 Свойства операторов..............................................................................170
5.4.4 Приоритет и порядок вычисления........................................................172
5.5 Резюме............................................................................................................177
5.6 Краткое описание предостережений............................................................179
5.7 Обзор советов по программированию.........................................................180
5.8 Вопросы..........................................................................................................180
5.9 Упражнения по программированию............................................................185
6 Указатели...............................................................................................................187
6.1 Память и адреса.............................................................................................187
6.1.1 Адрес и содержание...............................................................................189
6.2. Значения и их типы......................................................................................189
6.3. Содержимое переменной-указателя...........................................................191
6.4 Оператор косвенного обращения.................................................................192
6.5 Неинициализированный и недопустимый указатель.................................195
6.6 Нулевой указатель.........................................................................................1964
6.7 Указатели, косвенность и L-значения..........................................................197
6.8 Указатели, косвенное обращение и переменные........................................199
6.9 Константы-указатели.....................................................................................199
6.10 Указатели на указатели................................................................................201
6.11 Выражения с указателями...........................................................................203
6.12 Примеры.......................................................................................................212
6.13 Арифметика указателей..............................................................................217
6.13.1 Арифметические операции..................................................................218
6.13.2 Реляционные операции........................................................................222
6.14 Резюме..........................................................................................................224
6.15 Краткое описание предостережений..........................................................225
6.16 Резюме советов по программированию.....................................................226
6.17 Вопросы........................................................................................................226
6.18 Упражнения по программированию..........................................................229
7 Функции.................................................................................................................232
7.1 Определение функции...................................................................................232
7.1.1 Инструкция return...................................................................................234
7.2 Объявление функции.....................................................................................235
7.2.1 Прототипы...............................................................................................236
7.2.2 Предположения о функциях по умолчанию.........................................239
7.3 Аргументы функций......................................................................................240
7.4 АДТ (ADT) и черные ящики.........................................................................245
7.5 Рекурсия..........................................................................................................249
7.5.1 Отслеживание рекурсивной функции...................................................252
7.5.2 Рекурсия против итерации.....................................................................257
7.6 Списки переменного числа аргументов......................................................262
7.6.1 Макросы stdarg........................................................................................263
7.6.2 Ограничения связанные с переменным числом аргументов..............265
7.7 Резюме............................................................................................................266
7.8 Краткое описание предостережений............................................................269
7.9 Краткое изложение советов по программированию...................................269
7.10 Вопросы........................................................................................................270
7.11 Упражнения по программированию..........................................................271
8 Массивы.................................................................................................................273
8.1 Одномерные массивы....................................................................................273
8.1.1 Имена массивов......................................................................................273
8.1.2 Индексация..............................................................................................276
8.1.3 Указатели против индексации...............................................................2815
8.1.4 Эффективность указателей....................................................................282
8.1.5 Массивы и указатели..............................................................................291
8.1.6 Имена массивов как аргументы функций............................................292
8.1.7 Объявление параметров-массивов........................................................295
8.1.8 Инициализация.......................................................................................296
8.1.9 Неполная инициализация......................................................................297
8.1.10 Автоматическое определение размера массива.................................298
8.1.11 Инициализация символьных массивов...............................................298
8.2 Многомерные массивы..................................................................................299
8.2.1 Порядок хранения...................................................................................300
8.2.2 Имена массивов......................................................................................303
8.2.3 Индексация..............................................................................................303
8.2.4 Указатели на массивы.............................................................................308
8.2.5 Многомерные массивы как аргументы функций.................................310
8.2.6 Инициализация.......................................................................................311
8.2.7 Автоматическое определение размера массива...................................315
8.3 Массивы указателей......................................................................................316
8.4 Резюме............................................................................................................321
8.5 Краткое описание предостережений............................................................324
8.6 Краткое изложение советов по программированию...................................324
8.7 Вопросы..........................................................................................................324
8.8 Упражнения по программированию............................................................331
9 Строки, символы и байты....................................................................................338
9.1 Основы работы со строками.........................................................................338
9.2 Длина строки..................................................................................................339
9.3 Неограниченные строковые функции..........................................................341
9.3.1 Копирование строк.................................................................................341
9.3.2 Конкатенация строк................................................................................343
9.3.3 Возвращаемое значение функции.........................................................344
9.3.4 Сравнение строк.....................................................................................344
9.4 Функции для работы со строками с ограничением длины........................346
9.5 Базовый поиск строк.....................................................................................348
9.5.1 Поиск символа........................................................................................348
9.5.2 Поиск любого из нескольких символов................................................349
9.5.3 Поиск подстроки.....................................................................................350
9.6 Расширенный поиск строк............................................................................350
9.6.1 Поиск префиксов строк..........................................................................351
9.6.2 Поиск токенов.........................................................................................3536
9.7 Сообщения об ошибках.................................................................................356
9.8 Операции с символами..................................................................................357
9.8.1 Классификация символов......................................................................357
9.8.2 Преобразование символов.....................................................................358
9.9 Операции с памятью......................................................................................359
9.10 Резюме..........................................................................................................361
9.11 Краткое описание предостережений..........................................................363
9.12 Краткое изложение советов по программированию.................................364
9.13 Вопросы........................................................................................................364
9.14 Упражнения по программированию..........................................................366
10 Структуры и объединения.................................................................................376
10.1 Основы структуры.......................................................................................376
10.1.1 Объявление структур............................................................................377
10.1.2 Члены структуры..................................................................................380
10.1.3 Прямой доступ к членам......................................................................381
10.1.4 Косвенный доступ к членам................................................................382
10.1.5 Самосотносимые структуры................................................................383
10.1.6 Неполные объявления..........................................................................385
10.1.7 Инициализация структур.....................................................................386
10.2 Структуры, указатели и члены...................................................................387
10.2.1 Доступ к указателю..............................................................................389
10.2.2 Доступ к структуре...............................................................................390
10.2.3 Доступ к членам структуры.................................................................391
10.2.4 Доступ к вложенной структуре...........................................................394
10.2.5 Доступ к члену указателя.....................................................................395
10.3 Распределение памяти для хранения структур.........................................397
10.4 Структуры как аргументы функций...........................................................399
10.5 Битовые поля................................................................................................404
10.6 Объединения................................................................................................409
10.6.1 Вариантные записи...............................................................................411
10.6.2 Инициализация объединений..............................................................413
10.7 Резюме..........................................................................................................414
10.8 Краткое описание предостережений..........................................................416
10.9 Краткое изложение советов по программированию.................................416
10.10 Вопросы......................................................................................................416
10.11 Упражнения по программированию........................................................422
11 Динамическое распределение памяти..............................................................425
11.1 Зачем использовать динамическое выделение..........................................4267
11.2 malloc и free..................................................................................................426
11.3 calloc и realloc...............................................................................................428
11.4 Использование динамически выделяемой памяти...................................429
11.5 Распространенные ошибки динамической памяти..................................430
11.5.1 Утечки памяти.......................................................................................434
11.6 Примеры выделения памяти.......................................................................435
11.7 Резюме..........................................................................................................445
11.8 Краткое описание предостережений..........................................................446
11.9 Краткое изложение советов по программированию.................................446
11.10 Вопросы......................................................................................................446
11.11 Упражнения по программированию........................................................448
12 Использование структур и указателей..............................................................449
12.1 Связанные списки........................................................................................450
12.2 Односвязные списки...................................................................................450
12.2.1 Вставка в односвязный список............................................................452
12.2.2 Другие операции со списками.............................................................467
12.3 Двусвязные списки......................................................................................467
12.3.1 Вставка в двусвязный список..............................................................469
12.3.2 Другие операции со списками.............................................................483
12.4 Резюме..........................................................................................................483
12.5 Краткое описание предостережений..........................................................484
12.6 Краткое изложение советов по программированию.................................485
12.7 Вопросы........................................................................................................485
12.8 Упражнения по программированию..........................................................487
13 Дополнительные темы, связанные с указателями...........................................489
13.1 Больше указателей на указатели................................................................490
13.2 Продвинутые объявления...........................................................................492
13.3.1 Функции обратного вызова..................................................................498
13.3.2 Таблицы переходов...............................................................................503
13.4 Аргументы командной строки....................................................................506
13.4.1 Передача аргументов командной строки............................................506
13.4.2 Обработка аргументов командной строки..........................................510
13.5 Строковые литералы...................................................................................515
13.6 Резюме..........................................................................................................520
13.7 Краткое описание предостережений..........................................................521
13.8 Краткое изложение советов по программированию.................................521
13.9 Вопросы........................................................................................................522
13.10 Упражнения по программированию........................................................5278
14 Препроцессор......................................................................................................532
14.1 Предопределенные символы......................................................................533
14.2 #define...........................................................................................................534
14.2.1 Макросы................................................................................................536
14.2.2 Подстановка #define.............................................................................540
14.2.3 Макросы в сравнении с функциями...................................................543
14.2.4 Аргументы макроса с побочными эффектами...................................545
14.2.5 Соглашения об именовании.................................................................547
14.2.6 #undef.....................................................................................................548
14.2.7 Определения командной строки..........................................................548
14.3 Условная компиляция..................................................................................549
14.3.1 if defined.................................................................................................552
14.3.2 Вложенные директивы.........................................................................553
14.4 Включение файлов......................................................................................554
14.4.1 Включения библиотек..........................................................................555
14.4.2 Локальные включения..........................................................................556
14.4.3 Включение вложенных файлов...........................................................557
14.5 Другие директивы........................................................................................560
14.6 Резюме..........................................................................................................561
14.7 Краткое описание предостережений..........................................................563
14.8 Краткое изложение советов по программированию.................................564
14.9 Вопросы........................................................................................................564
14.10 Упражнения по программированию........................................................567
15 Функции ввода/вывода.......................................................................................569
15.1 Отчет об ошибках........................................................................................570
15.2 Завершение выполнения.............................................................................571
15.3 Стандартная библиотека ввода-вывода.....................................................572
15.4 Концепции ввода/вывода ANSI..................................................................573
15.4.1 Потоки...................................................................................................573
15.4.2 FILE........................................................................................................576
15.4.3 Стандартные константы ввода-вывода...............................................577
15.5 Обзор потокового ввода-вывода.................................................................578
15.6 Открытие потоков........................................................................................581
15.7 Закрытие потоков.........................................................................................583
15.8 Ввод/вывод символов..................................................................................586
15.8.1 Макросы ввода-вывода символов.......................................................587
15.8.2 Отмена ввода/вывода символов..........................................................587
15.9 Неформатированный линейный ввод/вывод.............................................5909
15.10 Ввод/вывод форматированной строки.....................................................593
5.10.1 Семейство scanf....................................................................................593
15.10.2 Коды формата scanf............................................................................595
15.10.3 Семейство printf..................................................................................600
15.10.4 Коды формата printf............................................................................605
15.11 Двоичный ввод-вывод...............................................................................611
15.12 Функции сброса на диск содержимого файловых буферов и поиска...612
15.13 Изменение буферизации...........................................................................616
15.14 Функции ошибок потока...........................................................................617
15.15 Временные файлы.....................................................................................618
15.16 Функции манипулирования файлами......................................................619
15.17 Резюме........................................................................................................620
15.18 Краткое описание предостережений........................................................624
15.19 Краткие советы по программированию.......................................................624
15.20 Вопросы......................................................................................................625
.15.21 Упражнения по программированию.......................................................627
16 Стандартная библиотека....................................................................................634
16.1 Целочисленные функции............................................................................634
16.1.2 Случайные числа .................................................................635
16.1.3 Преобразование строк ........................................................638
16.2 Функции чисел с плавающей точкой.........................................................639
16.2.1 Тригонометрия .....................................................................640
16.2.2 Гиперболические функции...................................................641
16.2.3 Логарифм и экспонента .......................................................642
16.2.4 Представление с плавающей точкой ..................................643
16.2.5 Степенные функции .............................................................644
16.2.6 Пол, потолок, абсолютное значение и остаток ..................645
16.2.7 Преобразование строк ........................................................645
16.3 Функции даты и времени............................................................................647
16.3.1 Процессорное время

Скачай этот файл прямо сейчас!

Зарегистрируйтесь и узнайте обо всех возможностях: