Язык С в вопросах и ответах - сстр. 5
функцию с переменным числом аргументов или на функцию без прототипа,
чтобы временно использовать не-ANSI компиляторы, чтобы
продемонстрировать, что Вы знаете, что делаете. (Кстати, самое
простое правило для запоминания.)
Итог:
Можно использовать 0 Необходимо преобразование
инициализация вызов функции, прототип которой
вне области видимости
присваивание переменное число аргументов
при вызове функции
сравнение
вызов функции, прототип
в области видимости,
количество аргументов
фиксировано
Смотри: K&R I Разд. A7.7 c. 190, Разд. A7.14 c. 192; K&R II
Разд. A7.10 c. 207, Разд. A7.17 c. 209; H&S Разд. 4.6.3 c. 72; ANSI
Разд. 3.2.2.3 .
1.3 Что такое NULL и как он определен с помощью #define?
O: Многим программистам не нравятся нули, беспорядочно разбросанные по
программам. По этой причине макрос препроцессора NULL определен в
<stdio.h> или <stddef.h> как значение 0 (или (void *) 0, об этом
значении поговорим позже.) Программист, который хочет явно различать
0 как целое и 0 как нулевой указатель может использовать NULL в тех
местах, где необходим нулевой указатель. Это только стилистическое
соглашение; препроцессор преобразует NULL опять в 0, который затем
распознается компилятором в соответствующем контексте как нулевой
указатель. В отдельных случаях при передаче параметров функции,
может все же потребоваться явное указание типа перед NULL (как и
перед 0). (Таблица в вопросе 1.2 приложима как к NULL, так и к 0).
NULL нужно использовать _только_ для указателей; см. вопрос 1.8.
Смотри: K&R I Разд. 5.4 c. 97-8; K&R II Разд. 5.4 c. 102; H&S
Разд. 13.1 c. 283; ANSI Разд. 4.1.5 c. 99, Разд. 3.2.2.3 c. 38,
Содержание Назад Вперед