Kernighan, B. W. and Ritchie, D. M. "The 'C' Programming Language"; Chapter 9

# Предметный указатель

$ А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я

## $

&
  адреса извлечение, операция
  Раздел 5.1

>
  больше, операция
  28

>=
  больше или равно, операция
  28

-
  вычитание, операция
  28

/
  деление, операция
  11
  28

%
  деление по модулю, операция
  28

~
  дополнение, операция
  32

*
  косвенная адресация, операция
  58

&&
  логическое "и", операция
  17
  28
  32

||
  Логическое "или", операция
  17
  28
  32

!
  логическое отрицание, операция
  28

<
  меньше, операция
  28

<=
  меньше или равно, операция
  28

!=
  неравенство, операция
  14
  28

\0
  нулевой символ
  21

\
  обратная косая черта, символ
  9
  26

|
  Побитовое включающее "или", операция
  68

&
  побитовое "и", операция
  32

^
  побитовое исключающее "или", операция
  32

==
  равенство, операция
  16
  28

<<
  сдвиг влево, операция
  32

>>
  сдвиг вправо, операция
  32

+
  сложение, операция
  28

++
  увеличение, операция
  15
  31
  65

->
  указатель на член структуры, операция
  75
  76

--
  уменьшение, операция
  15
  31
  65

*
  умножение, операция
  28

-
  унарный минус, операция
  28

\
  условная последовательность, символ
  9
  26

?:
  условное выражение
  Раздел 2.11

## А

автоматические переменные 19, 22, 48
автоматические переменные, инициализация 22, 27, 54
автоматические переменные, область действия 50
аддитивные операции 28
адреса извлечение, операция, & 58
адресная арифметика 6, 62
адрес переменной 20, 58
антипереполнение 28
аргумент, подмассив 61
аргумент, указатель 62
аргумент, список 9
аргумент, преобразование 30
аргументы, вектор аргументов командной строки (argv) 70
аргументы, инструкция #define 56
аргументы, командная строка 70
аргументы, переменное число 47
аргументы функции 9, 19
аргументы, число аргументов в командной строке (argc) 70
арифметика указателей 58, 60, 62, 71, 79
арифметические операции 28
арифметические преобразования 29
арифметические типы
ассоциативность операций 35

## Б

байт 78
безбуферный ввод 96
безбуферная функция getchar 97
бесконечный цикл 39
бестипный язык 6
бесформатный ввод 60
библиотека стандартная 7, 60, 62, 78, 87, 96, 99
библиотечная функция 9, 44, 50
биты, идиомы обработки 84
биты, поля битов 98
блок 37, 53
блочная структура 6, 37, 53
больше или равно, операция, >= 28
больше, операция, > 28

## В

ввод без буфера 96
ввод, возврат введенного символа 51
ввод и вывод через терминал 13, 87, 96
ввод, перенаправление 87
ввод с буфером 96
ввод символов 13
ввод с преобразованием 59
ввод форматный 11, 89
високосный год, определение 28
вложенная структура 75
вложенный оператор присваивания 14, 17
внешнее определение 22
внешние имена, длина 25
внешние переменные 22, 48
внешние переменные, инициализация 28, 48, 50, 54
внешние переменные класса static 52
внешние переменные, описание 22
внешние переменные, определение 22, 23
внутренние имена, длина 25
внутренние переменные класса static 52
возведение в степень 19
возврат на одну позицию, символ \в 9
возврат символов в файл ввода 51
восьмеричная константа 26
восьмеричная символьная константа 26
выбор варианта, префикс casl 38
выбор из нескольких вариантов 18, 38
выбор по умолчанию, префикс default 38
вывод, перенаправление 87, 88
вывод символов 13
вывод форматный 11, 88
вызов по назначению 6, 20, 47, 59
вызов по ссылке 6, 20, 59
вынужденное преобразование, операция 31
выравнивание, ограничения 80, 81, 85, 95, 108
выравнивание поля 85
выравнивание с помощью об'единения 103
выражение индексное 17
выражение константное 27, 39
выражение операторное 37, 38
выражение присваивания 14
выражение, тип 12
вычисления, порядок проведения 17,28,32,35,36,41,49,56,59
вычитание, операция, - 28
вычитание указателей 63

## Г

граничное условие 15, 42, 68

## Д

дата, преобразование 66, 74, 75
двоичное дерево 80
двойная кавычка, символ 9, 27
двумерный массив 66
двумерный массив, индексация 66
двумерный массив, инициализация 66
двусмысленность if-else 37
деление, операция, / 11, 28
деление по модулю, операция, % 28
деление целых 11, 28
дерево двоичное 80
длина имен 25
длина строки 27, 63
дополнение, операция, ~ 32

## З

завершение выполнения программы 93
зависимость от машины 29, 84, 85, 86
загрузка из стандартной библиотеки 87
загрузка программы на нескольких исходных файлах 19,44,45
запись в i-узле (i-node) 101
запятая, операция 41
зарезервированные слова 25
знак значений символов 29, 30
знаковое расширение 29, 30, 99
значение выражения отношения 30
значение логического выражения 30
значение признака конца файла EOF 14, 30, 87
значение функции getchar 30

## И

имена, длина 30
имя члена структуры 74
инициализация 27
инициализация автоматических переменных 22, 27, 54, 55
инициализация внешних переменных 27, 48, 50, 51, 54, 55
инициализация двумерного массива 66
инициализация массива 54, 55
инициализация массива структур 76
инициализация по умолчанию 54
инициализация регистровых переменных 54
инициализация символьного массива 54, 55
инициализация статических переменных 27, 54
инициализация структуры 74, 75
инициализация указателя 62, 79
индексация и указатели 60
индексация, начало отсчета 17, 18
индексация, пояснения 60
индексное выражение 18
инструкция #define 13, 56, 57
инструкция #define, аргументы 56, 57
инструкция #else
инструкция #endif
инструкция #if
инструкция #ifdef
инструкция #ifndef
инструкция #include 56, 87, 88
инструкция #line
инфиксная нотация 48
использование описаний typedef 103

## К

калькулятор 46, 48, 49, 91
класс памяти auto 19, 22
класс памяти extern 53
класс памяти register 53
класс памяти static 22 52, 53
ключевое слово asm
ключевое слово fortran
ключевые слова, программа подсчета 77
ключевое слово, список
команда сс 8, 45, 87
команда ls 101
командная строка аргументов 70
комбинация символов, программа нахождения 44, 71
комментарий 10
коммутативные операции 28, 35
компиляция с-программы 8, 19
компиляция программы на нескольких файлах 19, 44 45
компиляция раздельная 6, 44, 45, 50
компиляция, управляющие строки
компиляция условная 125, 126
конец строки 21, 26
конец файла 14, 30, 87
конец файла, значение EOF 14-30, 87
константа восмеричная 26
константа плавающая 10, 11
константа символическая 13, 14, 16, 56, 78
константа символьная 16, 26
константа типа double
константа типа long 26
константа целая 11
константа шестнадцатиричная 26
константное выражение 26, 27, 39
конструкция else-if 18-38
копирование ввода на вывод, программа 13, 14
косвенная адресация, операция, * 58
краткое присваивание 16, 17

## Л

лексическая сортировка 72
лексическая область действия
лексические соглашения
l-значение
логические операции 28
логическое выражение, значение 30
логическое "и", операция, && 17, 28, 32
логическое "или", операция, || 17, 28, 32
логическое отрицание, операция, ! 32
локальная переменная 22

## М

магическое число 13
макропредпроцессор 56
макрос getc 99, 100
макрос getchar 87, 88, 99
макрос isalpha 78, 94
макрос isdigit 78, 94
макрос islower 94
макрос isspace 94
макрос isupper 88, 94
макрос putc 99
макрос putchar 87, 88, 99
макрос tolower 88, 94
макрос toupper 94
макросы с аргументами 56
массив двумерный 66
массив, имя массива в качестве аргумента 6,20,47,61,66,67
массив, индексация двумерного массива 66
массив, инициализация 54, 55
массив, инициализация двумерного массива 66
массив, многомерный 66
массив, об'яснение индексации 60, 61
массив, описание 17, 18
массив, порядок расположения в памяти 66
массив, преобразование имени массива 60, 61
массив, размер по умолчанию 59, 69, 77
массив символов 20, 21, 64
массив указателей 67
массивы и указатели 60, 61, 69
массивы структур 76
масштабирование в арифметике указателей 60, 61, 63
машинная зависимость
меньше или равно, операция, <= 28
меньше, операция, < 28
метка 43
многомерный массив 66
множественные файлы, компиляция 6, 19, 44, 45
модульная организация 18-23, 48, 49, 67
мультипликативные операции

## Н

наглядное расположение текста программы 11, 15, 37, 38
научная запись 26
нахождение самой длинной строки, программа 20
начальное значение индекса массива 17, 18
незаконная арифметика указателей 63
неравенство, операция, != 14, 28
несовместимое описание типов 46, 47
неявное описание
неявное описание функции 46
новая строка, символ, \n 9, 15, 16, 26
нулевой символ, \0 21, 26
нулевой указатель, null 62, 63
нуль, опущенная проверка 37, 63, 64, 65
нуль-строка 27

## О

область действия автоматических переменных 50, 51
область действия внешних переменных 50, 51
область действия, правила 50, 51
обозначение "е" 26
обратная косая черта, символ, \ 9, 26
обратная польская нотация 48
об'единение, выравнивание с помощью об'единения 103
об'единение, допустимые операции
об'единение, ограничения 24, 85
об'единение, описание 24, 85
об'единение, ярлык (tag)
обязательное описание 10, 27, 50
ограничения на об'единения 84, 85
ограничения на поля 83, 84
ограничения на регистровые переменные
ограничения на структуры 75
ограничения на типы
одиночная кавычка, символ 16
оператор break 39, 42
оператор continue 42
оператор do 6, 41
оператор else 17
оператор for 6, 15, 39, 40, 41
оператор go 43
оператор if 15
оператор return 19, 20, 46, 47
оператор switch 6, 18, 38, 39, 49
операторы
операторы, об'единение 6, 37
операторы, последовательность выполнения
операторы, признак конца 10, 11, 37, 38
операции аддитивные
операции, ассоциативность 35, 36
операции арифметические 28
операции, допустимые над об'единениями
операции, допустимые над структурами
операции, допустимые над указателями 62, 63
операции, допустимые над функциями
операции коммутативные 28, 35, 36
операции логические 28
операции мультипликативные
операции отношения 14, 28
операции побитовые 32, 33
операции присваивания 28, 33, 34
операции равенства 28
операции сдвига 32, 33
операции, старшинство 14, 35, 36, 59, 76
операционная система unix 5, 6, 7, 92, 96
операционная система unix, interdata 5
операционная система unix, pdp-11 5
операционная система unix, система файлов 92,96-99,101,102
операция sizeof 78
описание extern 22, 23
описание file 92, 93
описание register 53
описание static 22, 52, 53
описание typedef 85, 86
описание typedef, использование 103
описание внешней переменной 22, 23
описание класса памяти
описание массива 17, 18
описание неявное
описание об'единения 24, 85
описание обязательное 10, 27, 50
описание поля 83, 84
описание, синтаксис
описание структуры 74
описание типа
описание указателя 58-61
описание функции
описание функции, неявное 46
описания
описатель
описатель абстрактный
описатель файла 96
определение внешнее 22, 23
определение внешней переменной 22, 23
определение данных
определение функции 19, 45
опущенный спецификатор класса памяти
опущенный спецификатор типа
основные типы 6, 10
отладочная программа языка "Си" (lint) 6
отношения, значения выражений 30
отношения, операции 14, 28

## П

память, класс auto 19, 22, 45
память, класс extern 22, 23
память, класс register 53
память, класс static 22, 52, 53
память, описание класса
память, порядок расположения массива 66
память, программа распределения 62, 63, 81, 83
память, программа распределения, calloc 95
параметр формальный 19, 53, 61
первичное выражение
перевод типа, операция 29-31, 81, 95
переменное число аргументов 47
переменные автоматические 19, 22, 48
переменные, адрес 20, 58
переменные, внешние 22
переменные, длина имен 25
переменные, синтаксис имен 25
перемотка файла 98
перенаправление ввода/вывода 87, 92, 96
переносимость 18, 26, 29, 30, 32, 47, 65, 85-88, 99, 103
переполнение 28
плавающие типы
побитовая операция включающего "или", | 32
побитовая операция "и", & 32
побитовая операция исключающего "или", ^ 32
побитовые операции 32
побочные эффекты 35, 36, 56
подчеркивание, символ 25
поиск в таблице, программа 82
поле, выравнивание 84
поле, ограничения 84
поле, описание 84
поле, ширина 84
польская нотация 48
помеченный оператор
помещение на хранение 80
порядок вычислений 17, 28, 32, 35, 36, 41, 49, 56, 59
порядок вычисления выражений 32
последовательность выполнения операторов
постфиксные операции ++ и -- 31, 64
поточный механизм 88, 96
по умолчанию, инициализация 54
по умолчанию, префикс default 39
по умолчанию, размер массива 55, 69, 77
правила определения области действия 50
правила преобразования типов 30
предпроцессор языка "Си" 56
преобразование double-float 30, 31
преобразование float-double 30, 46
преобразование аргументов функций 31
преобразование ввода 59, 60
преобразование ввода к нижнему регистру, программа 88
преобразование в операторе return 47
преобразование значения истинности 30
преобразование имени массива 61
преобразование переменных типа long в целые
преобразование переменных типа unsigned в целые
преобразование плавающих в целые 30
преобразование при присваивании 30
преобразование символов в целые 18, 29
преобразование типа, явная операция 30
преобразования указателей 81
преобразование указателей в целые 65
преобразование форматное 11
преобразование функции
преобразование целых в плавающие 11
преобразование целых в символы 30
преобразование целых в указатели
преобразование целых к типу long
преобразование целых к типу unsigned
преобразования арифметические 29
преобразования, правила 30
префиксные операции ++ и -- 31, 65
присваивание, выражение 14, 16, 34
присваивание, кратное 16
присваивание, операции 28, 33
присваивание, преобразование при присваивании 30
присваивания оператор, вложенный 14, 30
присваивание подавление, функция scanf 90
проверка в конце цикла 41
проверка в начале цикла 15, 41, 68
программа саt 91, 93
программа ср 98
программа есhо 70
программа fsize 102
программа grep 44, 102
программа lint, отладчик 6, 36, 45, 66, 86
программа, аргументы 70, 71
программа калькулятора 46, 48, 49 50, 91
программа копирования ввода на вывод 14
программа копирования файлов 14, 97
программа перевода температуры 10
программа подсчета ключевых слов 77
программа подсчета символов 15
программа подсчета символов пустых промежутков 17, 38, 39
программа подсчета слов 16
программа подсчета строк 15
программа поиска в таблице 82
программа поиска комбинации символов 44, 70, 71
программа поиска самой длинной строки 21
программа преобразования ввода к нижнему регистру 88
программа распечатки справочника 101
программа сортировки 67, 72
программа удаления хвостовых пробелов 42
программа, удобочитаемость 16, 17, 29, 40, 41, 42
программа, форма записи 11, 15, 79
производные типы 6, 10
пустой оператор 15
пустая функция 45

## Р

равенства операции 28
равенство, операция, == 15, 28
раздельная компиляция 6, 44, 50
размер числа 18, 15, 25, 26
расположение фигурных скобок 11
распределитель памяти 62, 81, 83
регистровые переменные, инициализация 54
режим доступа к файлу 92
режим защиты файла 97
рекурсивная структура данных 80
рекурсия 6, 55, 80, 87

## С

сдвига операции 32
сдвиг влево, операция, << 32
сдвиг вправо, операция, >> 32
семантика ссылок на структуру
символические константы 13, 14, 16, 56, 78
символические константы, длина 13
символическое имя
символ условной последовательности, \ 26
символ - целое, преобразование 18, 29
символьная строка 9, 26, 52
символьные константы 16, 26
символьные константы, восьмеричные 26
символьный массив 16, 20, 64
символьный массив, инициализация 54
символьный набор ascii 16, 26, 29, 78
символьный набор ebcdic 26, 29
символы, ввод-вывод 13
символы, знак значений символов 29
символы на вводе, подсчет количества 15
символы отрицательные
символы пустых промежутков, программа подсчета 17, 38
символы, функции для анализа вида символов 94
синтаксис имен переменных
синтаксис описания 27
синтаксис, сводка
синтаксис ссылок на структуру
синтаксическая нотация
скобки фигурные 9, 11
скобки фигурные, расположение 11
слишком длинная инструкция #define 56
слова, программа подсчета 16
сложение, операция, + 27
сокрытие информации 49, 52
сортировка лексикографическая 72
сортировка по шеллу 40
сортировка, программа 67, 72
сортировка строк текста 67
сортировка численная 73
составной оператор 37, 53
спецификатор класса памяти
спецификатор класса памяти, опущенный
спецификатор типа
спецификатор типа, опущенный
спецификация преобразования %с 11
спецификация преобразования %d 11
спецификация преобразования %f 11, 15
спецификация преобразования %ld 11
спецификация преобразования %о 11
спецификация преобразования %s 11
спецификация преобразования %х 11
список ключевых слов
список файлов в справочнике, программа распечатки 101
справочник 107
сравнение указателей 63
ссылающаяся на себя структура 80
стандартная библиотека 7, 59, 62, 78, 87, 96, 99
стандартная библиотека, загрузка из нее 87
стандартный ввод 87, 96
стандартный вывод 87, 96
стандартный вывод ошибок 96
старшинство операций 14, 35, 59, 76
статические переменные, внешние 52
статические переменные, внутренние 52
статические переменные, инициализация 27, 54
строка, длина 20, 21, 27
строка, признак конца 20, 27
строка, тип
строка ввода, подсчет количества 15
строки текста, сортировка 67
строчная константа 9, 15, 21, 64
структура, вложенная 75
структура, имя члена 74, 75
структура, инициализация 74, 75
структура, инициализация массива структур 76, 77
структура, операция указания члена 75
структура, описание 74
структура, семантика ссылок
структура, синтаксис ссылок
структура, ссылающийся на себя 80
структура, указатель на структуру 79
структура, указатель на структуру, операция 76
структура, ярлык 74
структура, допустимые операции
структура, массивы структур 76
структура, ограничения 75

## Т

табуляции символ 9
температура, программа перевода 10
терминал, ввод и вывод 13, 87, 96
тип char 10, 25
тип double 10, 15, 25
тип float 10, 25
тип int 10, 25
тип long 10, 15, 25
тип short 10, 25
типа описание
типа описание, несовместимое 67
типа спецификатор
типа спецификатор, отсутствующий
тип выражения 12
типов имена
типов несоответствие 46
типов преобразование в операторе return 46
типов преобразование, операция 30
типов преобразование, правила 30
типов преобразование, явное 30, 82
типов преобразования 29
типов проверка 6, 82
тип переменной 10
тип строки
типы арифметические
типы, ограничения
типы основные 6, 10
типы плавающие
типы производные 6, 10
типы целочисленные
точка с запятой 11, 13, 15, 37, 38

## У

увеличение, операция, ++ 15, 31, 65
удобочитаемость программы 11,14,16,25,29,34,37,40-42,54,86
указателей арифметика 58, 60, 61, 71, 79
указателей арифметика, масштабирование 60, 61, 63
указателей арифметика, незаконная 61, 63
указателей вычитание 63
указателей инициализация 61, 79
указателей массив 60, 61, 69
указателей описание 58, 60
указателей преобразование 82
указателей преобразование в целые 65
указателей сравнение 63
указатели 6, 19
указатели, допустимые операции 62
указатели и индексы 60, 61
указатели и массивы 60, 69
указатель null 62, 63
указатель в качестве аргумента 60
указатель на символ 62
указатель на структуру 79
указатель на функцию 72, 86
указатель файла 92
уменьшение, операция 31, 65
умножение, операция, * 28
унарное выражение
унарный минус, операция, - 28
условная последовательность 9, 16, 26
условная последовательность, символ, \ 9, 26
условное выражение, ?: 34

## Ф

файл а.out 8, 45
файл dir.h, структура справочника 101
файл stat.h 101
файл stderr 92
файл stdin 92
файл stdio.h, заголовок 87
файл stdio.h, содержание 99
файл stdout 92
файл types.h 101
файл, включение 56
файл, дескриптор 96
файл, добавление 92, 98
файл, доступ 91, 96
файл, конец файла 13, 87
файл, конкатенация 91
файл, открытие 91, 96
файл, перемотка 98
файл, программа копирования 13, 97
файл, режим доступа 92, 97
файл, режим защиты 97
файл, создание 92, 96
файл, указатель 91, 99
формальный параметр 19, 53, 61
форматное преобразование 11
форматный ввод 11, 89
форматный вывод 11, 88
функция alloc 62, 103
функция atif 46
функция atoi 29, 40
функция binary, двоичный поиск 38, 79
функция bitcount 33
функция calloc, распределитель памяти 95
функция cfree 95
функция close, обращение к системе 98
функция copy 21
функция creat, обращение к системе 97
функция day-of-year 66, 75
функция exit,-exit 93
функция fclose 93
функция fgetc 93
функция _fillbuf 100
функция fopen 91, 100
функция fprintf 92
функция fputc 93
функция free 62, 104
функция fscanf 92
функция getbits 32, 33
функция getc 92
функция getch 52
функция getchar 13, 87
функция getchar без буфера 97
функция getchar, возвращаемое значение 30
функция getchar с буфером 97
функция getint 60
функция getline 22, 45
функция getop 51
функция getword 78
функция hash 83
функция index 45
функция install 83
функция itoa 41
функция lookup 83
функция lower 29
функция lseek, обращение к системе 98
функция main 8
функция month_day 66, 76
функция month_name 69
функция morecore 104
функция numcmp 73
функция open, обращение к системе 97
функция рор 49
функция power 19, 20
функция printd 55
функция printf 9, 11, 88
функция push 49
функция putc 92
функция putchar 13, 87
функция read, обращение к системе 96
функция readlines 67
функция reverse 41
функция sbrk, обращение к системе 104
функция scanf 89
функция scanf, подавление присваивания 90
функция seek, обращение к системе 98
функция sort 40, 68, 72
функция sprintf 91
функция squeeze 31
функция sscanf 91
функция stat, обращение к системе 101
функция stat, возвращаемая структура 101
функция stat, определения 101
функция strcat 32
функция strcmp 65
функция strcpy 64
функция strlen 26
функция strsave 65
функция swap 59, 73
функция system 95
функция tree 81
функция treeprint 81
функция type 78
функция ungetc 94
функция ungetch 52
функция unlink, обращение к системе 98
функция write, обращение к системе 96
функция writelines 68
функция, аргументы 9, 19
функция, возвращаемое значение 19
функция, длина имени 25
функция, допустимые операции
функция, неявное описание 46
функция, ничего не делающая 45
функция, описание
функция, определение 19, 45
функция, преобразование
функция, преобразование аргументов 31
функция, проверка символов 94
функция, семантика обращения
функция, синтаксис обращения
функция, указатель на функцию 72, 86

## Х

хвостовые пробелы, программа удаления 42
хеширование, таблица 82

## Ц

целая константа 11
целочисленные типы
цикл do, идиома 40
цикл for
цикл while 11
цикл бесконечный 40
цикл, проверка в конце 41
цикл, проверка в начале 15, 41, 68

## Ч

часть массива в качестве аргумента 61
числа, размер 10, 15, 25
численная сортировка 72
число аргументов, переменное 47

## Ш

шестнадцатиричная константа 26

## Э

эффектность 34, 43, 53, 55, 68, 78, 81, 87, 97, 104

## Я

явное преобразование, операция
явное преобразование типа 31, 81, 95

ярлык об'единения
ярлык структуры
  Раздел 6.1
  Раздел 17.5
  Раздел 20.1