Брайан Керниган - Язык программирования Си. Издание 3-е, исправленное
- Название:Язык программирования Си. Издание 3-е, исправленное
- Автор:
- Жанр:
- Издательство:Невский Диалект
- Год:2001
- Город:Санкт-Петербург
- ISBN:0-13-110362-8
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Брайан Керниган - Язык программирования Си. Издание 3-е, исправленное краткое содержание
Книга широко известных авторов, разработчиков языка Си, переработанная и дополненная с учетом стандарта ANSI для языка Си, 2-е английское издание которой вышло в 1988 году, давно стала классикой для всех изучающих и/или использующих как Си, так и Си++. Русский перевод этой книги впервые был выпущен изд- вом "Финансы и статистика" в 1992 г. и с тех пор пользуется неизменным спросом читателей.
Для настоящего третьего русского издания перевод заново сверен с оригиналом, в него внесены некоторые поправки, учитывающие устоявшиеся за прошедшие годы изменения в терминологии, а так же учтены замечания, размещенные автором на странице http://cm.bell-labs.com/cm/cs/cbook/2ediffs.html.
Для программистов, преподавателей и студентов.
Издание подготовлено при участии издательства "Финансы и статистика"
Язык программирования Си. Издание 3-е, исправленное - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
• Стандарт разрешает адресоваться с помощью указателей на место, лежащее сразу за последним элементом массива, и позволяет оперировать с такими указателями, как с обычными, см. A7.7.
• Стандарт вводит (заимствованный из C++) способ записи прототипа функции с включением в него типов параметров и явного указания о возможности их изменения и формализует метод работы с переменным списком аргументов. (см. A7.3.2, A8.6.3, B7.) С некоторыми ограничениями доступен и старый способ записи.
• Стандартом запрещены пустые объявления, т. е. такие, в которых нет объявителей и не объявляется ни одной структуры, объединения или перечисления. Однако объявление с одним тегом структуры (или объединения) переобъявит ее даже в том случае, если она была объявлена во внешней области действия.
• Запрещены объявления внешних данных, не имеющие спецификаторов и квалификаторов (т. е. объявления с одним "голым" объявителем).
• В некоторых реализациях, когда extern-объявление расположено во внутреннем блоке, его область видимости распространяется на остальную часть файла. Стандарт вносит ясность в эту ситуацию и объявляет, что область видимости такого объявления ограничена блоком.
• Область видимости параметров "вставляется" в составную инструкцию, представляющую собой тело функции, так что объявления на верхнем уровне функции не могут их "затенить".
• Несколько изменены именные пространства идентификаторов. Всем тегам структур, объединений и перечислений стандарт выделяет одно именное пространство; для меток инструкций вводится отдельное именное пространство (см. A11.1). Кроме того, имена элементов связаны со структурой или объединением, частью которого они являются. (С некоторых пор это общепринятая практика.)
• Допускается инициализация объединения; инициализатор относится к первому элементу объединения.
• Разрешается инициализация автоматических структур, объединений и массивов, хотя и с некоторыми ограничениями.
• Разрешается инициализация массива символов с помощью строкового литерала по точному количеству указанных символов (без '\0').
• Управляющее выражение и case-метки в switchмогут иметь любой целочисленный тип.
Предметный указатель
0...константа восьмеричная 2.3, A2.5.1
0x...константа шестнадцатеричная 2.3, A2.5.1
...многоточие 7.3, A7.3.2
>=оператор больше или равно 2.6, A7.9
>оператор больше чем 2.6, A7.9
-оператор вычитания 2.5, A7.7
--оператор декремента 1.5.2, 2.8, 5.5, A7.3.4, A7.4.1
/оператор деления 1.2, 2.5, A7.6
%оператор деления по модулю 2.5, A7.6
.оператор доступа к элементу структуры 6.1, A7.3, A7.3.3
->оператор доступа к элементу структуры через указатель 6.2, A7.3, A7.3.3
,оператор запятая 3.5, A7.18
++оператор инкремента 1.5.2, 2.8, 5.5, A7.4, A7.4.1
*оператор косвенного доступа 5.1, A7.4.3
&&оператор логического И 1.5.4, 2.6, 2.9, A7.14
||оператор логического ИЛИ 1.5.4, 2.6, 2.9, A7.15
!оператор логического отрицания 2.6, A7.4, A7.4.7
<=оператор меньше или равно 2.6, A7.9
<оператор меньше чем 2.6, A7.9
!=оператор неравенства 1.5.1, 2.6, A7.10
&оператор побитового И 2.9, A7.11
|оператор побитового ИЛИ 2.9, A7.13
^оператор побитового исключающего ИЛИ 2.9, A7.12
~оператор побитового отрицания 2.9, A7.4.6
&оператор получения адреса 5.1, A7.4.2
#оператор препроцессора 4.11.2, A12.3
##оператор препроцессора 4.11.2, A12.3
=оператор присваивания 1.5.1, 2.6, A7.17
+=оператор присваивания 2.10
==оператор равенства 1.5.3, 2.6, A7.10
<<оператор сдвига влево 2.9, A7.8
>>оператор сдвига вправо 2.9, A7.8
+оператор сложения 2.5, A7.7
*оператор умножения 2.5, A7.6
-оператор унарный минус A7.4.5
+оператор унарный плюс A7.4.4
"символ двойная кавычка 1.1, 1.5.3, 2.3, A2.5.2, A2.6
'символ кавычка 1.5.3, 2.3, A2.5.2
\0символ нулевой 1.9, 2.3, A2.5.2
\\символ обратная наклонная черта 1.1, 2.3
_символ подчеркивания 2.1, A2.3, B
?:условное выражение 2.11, A7.16
аргументы командной строки 5.10
бесконечный цикл for( ; ; ) 3.5, 4.11.2
библиотечная функция 1.1, 4.1, 4.3, Приложение B
abort B5
abs B5
acos B4
asctime B10
asin B4
atan, atan2 7.8.6, B4
atof B5
atoi B5
atol B5
bsearch B5
calloc 7.8.5, B5
ceil B4
clearerr B1.7
clock B10
cos 7.8.6, B4
cosh B4
ctime B10
difftime B10
div B5
exit 7.6, B5
exp 7.8.6, B4
fabs 7.8.6, B4
fclose 7.5, B1.1
feof 7.6, B1.7
ferror B1.7
fflush B1.1
fgetc B1.4
fgetpos B1.6
fgets 7.7, B1.4
filecopy 7.6
floor B4
fmod B4
fopen 7.5, B1.1
fprintf 7.5, B1.2
fputc B1.4
fputs 7.7, B1.4
fread B1.5
free B5
freopen B1.1
frexp B4
fscanf 7.5, B1.3
fseek B1.6
fsetpos B1.6
ftell B1.6
fwrite B1.5
getc 7.5, B1.4
getchar 1.5, 7.1, 7.5, B1.4
getenv B5
gets B1.4
gmtime B10
isalnum 7.8.2, B2
isalpha 7.8.2, B2
iscntrl B2
isdigit 7.8.2, B2
isgraph B2
islower 7.8.2, B2
isprint B2
ispunct B2
isspace 7.8.2, B2
isupper 7.8.2, B2
isxdigit B2
labs B5
ldexp B4
ldiv B5
localtime B10
log, log10 7.8.6, B4
longjmp B8
malloc 6.5, 7.8.5, B5
memchr B3
memcmp B3
memcpy B3
memmove B3
memset B3
mktime B10
modf B4
perror B1.7
pow 7.8.6, B4
printf B1.2
putc 7.5, B1.4
putchar 1.5, 7.1, B1.4
puts 7.7, B1.4
qsort B5
raise B9
rand B5
realloc B5
remove B1.1
rename B1.1
rewind B1.6
scanf 7.4, B1.3
setbuf B1.1
setjmp B8
setvbuf B1.1
signal B9
sin 7.8.6, B4
sinh B4
sprintf 7.2, B1.2
sqrt 7.8.6, B4
srand B5
sscanf B1.3
strcat 7.8.1, B3
strchr 7.8.1, B3
strcmp 7.8.1, B3
strcpy 7.8.1, B3
strcspn B3
strerror B3
strftime B10
strlen 7.8.1, B3
strncat 7.8.1, B3
strncmp 7.8.1, B3
strncpy 7.8.1, B3
strpbrk B3
strrchr 7.8.1, B3
strspn B3
strstr B3
strtod B5
strtok B3
strtol B5
strtoul B5
system B5
tan B4
tanh B4
time B10
tmpfile B1.1
tmpnam B1.1
tolower 7.8.2, B2
toupper 7.8.2, B2
ungetc 7.8.3, B1.4
vfprintf 8.3, B1.2
vprintf 8.3, B1.2
vsprintf 8.3, B1.2
бинарное дерево 6.5
бинарный поток 7.5, B1
битовое поле
выравнивание 6.9, A8.3
объявление 6.9, A8.3
биты, образцы манипулирования 2.9, 6.9
блок см. также составная инструкция
структура 3.1, 4.8, A9.3
инициализация в. 4.9, A9.3
буферизация см. setbuf, setvbuf
буферизованный getchar 8.2
быстрая сортировка 4.10, 5.6
ввод
без буферизации 8.2
возврат символа на 4.3
с буферизацией 8.2
с клавиатуры 1.1, 7.1, 8.1
форматный см. scanf
ввод-вывод
символов 1.5, 7.1
ошибки 7.6, B1.7
перенаправление 7.1, 7.5, 8.1
с терминала 1.5
високосный год, вычисление 2.5, 5.7
вывод на экран 1.5, 7.1, 7.5, 8.1
перенаправление 7.1
форматный см. printf
вызов
по значению 1.8, 5.2, A7.3.2
по указателю 1.8, 5.3
выравнивание битового поля
с помощью union 8.7
ограничения по 6.4, 6.5, 6.8, 7.8.5, 8.7, A6.6
выражение A7
в скобках A7.2
константное 2.3, 3.4, 4.11.3, A7.19
логическое, численное значение 2.7
очередность вычисления 2.12, A7
первичное A7.2
Читать дальшеИнтервал:
Закладка: