В
главе 2 l 444x2324e 4;ы уже
обсуждали
тот факт, что
аргументы
функций
передаются
по значению,
т.е. вызванная
функция получает
свою
временную
копию
каждого
аргумента, а
не его адрес.
Это означает,
что вызванная
функция не
может
воздействовать
на исходный
аргумент в
вызывающей
функции. Внутри
функции
каждый
аргумент по
существу является
локальной
переменной,
которая инициализируется
тем
значением, с
которым к
этой функции
обратились.
Между
прочим, не
существует
полностью
удовлетворительного
способа
написания
переносимой
функции с переменным
числом
аргументов.
Дело в том, что
нет
переносимого
способа, с
помощью которого
вызванная
функция
могла бы
определить,
сколько
аргументов
было
фактически
передано ей в
данном
обращении.
Таким образом,
вы, например,
не можете
написать
действительно
переносимую
функцию,
которая
будет вычислять
максимум от
произвольного
числа аргументов,
как делают
встроенные
функции MAX в
ФОРТРАНЕ и PL/1.
Обычно
со случаем
переменного
числа аргументов
безопасно
иметь дело,
если
вызванная
функция не
использует
аргументов,
которые ей на
самом деле не
были переданы,
и если типы
согласуются.
Самая
распространенная
в языке «C»
функция с
переменным числом
- это printf информацию,
позволяющую
определить
количество
остальных
аргументов и
их типы.
Функция printf