Файл: В., Фомин С. С. Курс программирования на языке Си Учебник.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.03.2024
Просмотров: 165
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
с присваиванием (&=), 31, 36
с присваиванием (|=),
31, 36
постфиксная, 32, 45
префиксная, 32, 45
приведения,
см. Операция
преобразования
приоритет,
см. Приоритет операций
присваивания (=), 42, 145,
167, 195
разыменования (*), 31, 199, 256
сдвига влево (<<), 34
сдвига вправо (>>), 34
сложения (+), 33, 34
сравнения на равенство (==),
31, 34, 35, 148
умножения (*), 33, 44
условная (?:), 30, 31
явного преобразования
типа, 38
Описание
внешнего объекта, 234
и определение, см. Определение и описание
символьной переменой, 165
структуры, 277
указателя, 144
функции, 40, 98, 178
Определение, 22, 95, 285
и описание, 40, 60, 178
массива, 187
объединения, 275
переменной, 22
указателя, 143
на структуру, 257
на функцию, 196
функции, 95, 98
с переменным числом аргументов, 211
Остаток, см. Операция взятия остатка
Отношения, см. Операция отношения
П
Память, выделение автоматическое, см. Класс памяти автоматической динамическое, 267 локальная,
см. Класс памяти auto регистровая,
см. Класс памяти register ЭВМ, 22
Параметр макроса, 115, 130, 134, 135
Параметр функции, 40, 43, 60, 68, 95, 96, 98, 176, 180, 186, 192, 207
Переключатель, см. Оператор switch
Переменная, 21 автоматической памяти, см. Класс памяти auto вещественная, 62 глобальная,
см. Глобальная переменная индексированная,
см. Индексация как объект, 21 локальная,
см. Класс памяти static регистровая,
см. Класс памяти register статическая,
см. Класс памяти static
целочисленная, 22 Перечислимая константа, см. Константа перечисляемого типа
Перечисляемый тип, 13 Плюс,
см. Операция плюс унарный Побочные эффекты, 124 Поле битовое,
см. Битовое поле Поразрядные операции,
см. Операция поразрядное И (ИЛИ, НЕ)
Предельные значения для вещественных типов, 358 констант, 17, 22, 24, 28, 30, 73, 118
переменных целочисленных типов, 357
Преобразование, см. Операция преобразования
Предопределенные дескрипторы файлов, 329 значения указателя, 289 константы, 316, 324, 329 указатели на поток, 285, 286, 292
Препроцессор, 57, 114 директивы, см. Директивы препроцессора команды, см. Директивы препроцессора
Префиксная операция, см. Операция префиксная
Приведение, см. Операция преобразования
Приоритет операций, 30, 31, 35, 42, 147, 152, 199, 259
Присваивание,
см. Операция присваивания
множественное, 47
Пробельный символ, 301, 302
обобщенный 11, 21
Производные типы, 141, 239,
264
Прототип, 39, 40, 61, 98, 99,
123, 366,
см. Описание функции
Р
Разделитель, 41, 56, 340
пробельный,
см. Обобщенный пробельный символ
Разыменование указателей
(обращение по указателю),
см. Операция разыменования
Ранги операций,
см. Приоритет операций Рекурсивная функция, 224, 225 Рекурсия, 223, 226, 271
С
Сдвиг влево,
см. Операция сдвига влево
с присваиванием, 31, 36
вправо, см. Операция сдвига вправо
с присваиванием, 31, 36
Символ '\0', 20, 169, 173, 189,
293
'\n'? 15, 20, 114,
см. Эскейп-последователь-
ность
подчеркивания, 11, 12, 14
Слово зарезервированное, см. Служебное слово ключевое,
см. Служебное слово
Сложение, см. Операция сложения
Служебное слово, 12, 19, 60,
66, 275
auto, см. Класс памяти auto
break, см. Оператор break
case, см. Метка case
в переключателе cdecl,
см. Модификатор cdecl char,
см. Тип char
const,
см. Модификатор const continue,
см. Оператор continue default,
см. Метка default
в переключателе delete,
см. Операция delete
do,
см. Оператор do double,
см. Тип double
else, см. Оператор else
enum,
см. Перечислимые константы
extern, см. Класс памяти extern
far,
см. Модификатор far
float,
см. Тип float
for,
см. Оператор for
goto,
см. Оператор goto
if,
см. Оператор if
int,
см. Тип int
long,
см. Тип long
pascal,
см. Модификатор pascal
register,
см. Класс памяти register
return,
см. Оператор return
short,
см. Тип short
signed, 12, 13, 22, 23, 51
sizeof,
см. Операция sizeof
static,
см. Класс памяти static
struct,
см. Структурный тип
switch,
см. Оператор switch
typedef,
см. Спецификатор typedef
union,
см. Объединяющий тип
unsigned,
см. Тип unsigned
void,
см. Тип void
volatile,
см. Модификатор volatile
while,
см. Оператор while Составной оператор, 68, 69, 95 Спецификатор, 12
typedef, 12, 13, 206, 242 Спецификация преобразования, 149, 165, 294, 295, 302, 303
Список инициализации, см. Инициализация
Сравнение,
см. Операция сравнения
на равенство
Стандартный поток, 288, 289, 341, 345, 362
Строка замещения, 117, 119, 120, 129, 130, 243 форматная, 62, 73, 177, 221, 294, 314
Строковая константа, см. Константа строковая
Структура, 12, 239, 252, 262, см. Структурный тип
Структурный тип, 13, 240, 241, 242, 243, 244, 245
Т
Тег,
см. Структурный тип
Тело функции, 60, 96, 176, 177, 197, 229
цикла,
см. Цикл
Тип, 12
char, 165
double, 18, 64
float, 65, 73
int, 17, 26, 37, 62, 96
long, 16, 370
long double, 50
short, 13, 22, 23, 24, 51, 303,
304, 357
unsigned, 295
void, 12, 13, 60, 96, 144, 180,
271
void*, 155
агрегирующий,
см. Агрегирующий тип арифметический, 17, 24, 29 базовый, 165
беззнаковый,
см. Тип unsigned
возвращаемого значения,
см. Значение,
возвращаемое функцией
данных, 18, 24, 216, 240, 264, 275, 317
знаковый,
см. Тип signed объединяющий,
см. Объединяющий тип переменной, 17, 60 перечисляемый,
см. Перечисляемый тип производный,
см. Производные типы результата,
см. Тип возвращаемого
значения
скалярный,
см. Скалярный тип структурный,
см. Структурный тип
указателя, 198, 199
1 ... 34 35 36 37 38 39 40 41 42
void*,
см. Тип void*
функции, 157, 198
чисел с плавающей точкой, см. Тип float, Тип double
Точность простая, см. Тип
float, 65, 73, 76
двойная, см. Тип double
У
Указатель, 14, 19, 31, 37, 43, 141, 143, 145, 147, 151 значение, 144, 197,
см. Значение указателя и массив, 164, 180,
см. Массив и указатель инициализация, 94, 234, см. Инициализация массива
константа, 151, 153, 197 константный,
см. Указатель-константа на массив, 150
на объект, 43, 141, 263, 269
на поток, 287, 288, 308,
315, 323
на строку, 173, 211
на структурированный объект, 37
на структуру, 258, 278
на функцию, 197, 198, 202, 204, 207, 208
нулевой, см. Нулевой указатель
объект, 150
параметр, 181 переменная, 145 пустой,
см. Нулевой указатель родовой,
см. Тип void*
Умножение,
см. Операция умножения
Унарные операции, 66, 148
Управляющая
последовательность, 15
Условная операция, см. Операция условная трехместная, 38, 54
Условный оператор, см. Оператор if
Уточненное имя, см. Имя уточненное
Ф
Файл заголовочный, см. Заголовочный файл
Форматирование данных
при вводе-выводе, 294
Форматная строка, 61, 73, 177,
221, 294, 300, 301, 314
Флаг форматирования, 297
Функция, 176
main( ), 60, 100, 103 описание,
см. Описание функции определение,
см. Определение функции прототип,
см. Прототип
рекурсивная,
см. Рекурсивная функция с переменным количеством аргументов, 211 самовызывающая,
см. Рекурсивная функция указатель,
см. Указатель на функцию
Функция библиотечная
calloc( ), 155, 164, 219
close( ), 32, 328
creat( ), 322, 323, 327
exit( ), 104, 108, 226
fclose( ), 288
fopen( ), 287
free( ), 155, 156, 164, 230, 266
fseek( ), 316, 317, 318, 321
getchar( ), 166, 167, 288, 289
lseek( ), 323, 331, 332
malloc( ), 155, 157, 158, 164, 173, 271
open( ), 322, 323, 325, 327
perror( ), 287, 288
printf( ), 61, 62, 67, 68, 165,
-
288, 293, 294
putchar( ), 288, 289, 291,
292, 309
qsort( ), 207, 208, 210
read( ), 322, 328, 329
scanf( ), 73, 74, 76, 165,
-
183
strcmp( ), 210, 211
strcpy( ), 194
strlen( ), 195
strncat( ), 192
strstr( ), 191, 364
va_arg( ),
см. Макроопределение
va_arg( )
va_end( ),
см. Макроопределение
va_end( )
va_start( ), см. Макроопределение
va_start( )
write( ), 322, 328, 329, 330
Ц
Целая константа, см. Константа целая
Целочисленный тип,
см. Тип int (long, short, unsigned)
Цикл, 14
бесконечный, 205, 307 итерационный,
см. Оператор for с постусловием, см. Оператор do с предусловием,
см. Оператор while
Ш
Шестнадцатеричная константа, см. Константа шестнадцатеричная
Э
Эскейп-последовательность, 119
Эффекты побочные, см. Побочные эффекты
Я
Явное преобразование типа, см. Операция явного преобразования типа
4 Лексема - единица текста программы, которая при компиляции воспринимается как единое целое и по смыслу не может быть разделена на более мелкие элементы.
5Приведенный пример и общие положения вычислительной математики заставляют существенно ограничить применение переменных типа float. Тип float можно выбирать для представления исходных данных или окончательных результатов, получаемых в программе. Однако применение данных типа float в промежуточных вычислениях (особенно в итерационных алгоритмах) следует ограничить и всегда использовать double либо long double.
К сожалению, ни double, ни long double не снимают полностью проблем конечной точности представления вещественных чисел в памяти ЭВМ. Существенное различие в порядках значений операндов арифметических выражений может привести к подобным некорректным результатам и при использовании типов double и long.
Выделение лексем из текста программы. В главе 1 мы ввели понятие лексемы, перечислили их группы (идентификаторы, знаки операций и т. д.) и определили состав каждой из групп лексем. Первая задача, которую решает компилятор, - это лексический анализ текста программы. В результате лексического анализа из сплошного текста выделяются лексические единицы (лексемы). Программисту полезно знать, какими правилами при этом руководствуется компилятор.
6char *z;
/* z - указатель на объект символьного типа */ int *k,*i;
/* k, i - указатели на объекты целого типа */ float *f;
/* f - указатель на объект вещественного типа */
7#include
#include
#include
/* Определение функции для сравнения: */ int compare(const void *a, const void *b) {
unsigned long *pa = (unsigned long *)a,
8pb = (unsigned long *)b;
return strcmp((char *)*pa, (char *)*pb);
}
void main()
{
char *pc[] = {
"One - 1",
"Two - 2",
"Three - 3",
"Four - 4",
"Five - 5",
9pinega = = dot[0]
pinega -> massэквивалентно (*pinega).mass
pinega -> coord[0] эквивалентно (*pinega).coord[0]
#include
struct complex
{ /* Определение структурного типа complex*/ float x; /* Вещественная часть */ float y; /* Мнимая часть */
} array [ ] = {1.0, 2.0, 3.0, -4.0, -5.0, -6.0, -7.0, -8.0}; struct complex summa = {0.0, 0.0};
Здесь ранее определенная структура типа struct mix является элементом структуры типа struct hole.
В то же время элементом структуры может быть указатель на структуру того же типа, что и определяемый структурный тип: