Язык С в вопросах и ответах

             

Язык С в вопросах и ответах - сстр. 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,



Содержание  Назад  Вперед