sum_n_avg()
принимает 5 входов: 3 - double
, 2 - указатели.
void sum_n_avg(double arg1, double arg2, double arg3, double *sum, double *avg);
Нет никакой информации, выходящей из функции, кроме двух указателей, которые указывают, где хранить данные.
Что именно мешает компилятору понять следующую программу, если все ссылки и указатели были сведены к простым переменным?
Если удалить «ссылки» из sum_n_avg()
, тогда
sum_n_avg_noref(double arg1, double arg2, double arg3, double sum, double avg)
- это функция, которая принимает 5 double
входов.
Нет никакой информации, выходящей из функции, ни указаний на то, что параметр должен быть чем-то, кроме «входа».
почему C делает это
C удалось из-за простой конструкции. Аргументы функции являются входными данными. Возвращаемым значением является выход.
Ссылки на сложные вещи.
Чтобы разместить более одного вывода, код передается в указателях как места для хранения данных.