Ваш вопрос страдает от терминологической путаницы.
void f();
является , а не прототипом функции в C. Это объявление функции , которое не представляет прототип. В то же время
void f(long double y[], long double A);
также является объявлением функции, и это прототип (то есть он вводит прототип для f
).
Чтобы ответить на ваши вопросы, да, всегда полезно объявлять функции с прототипами (т.е. лучше объявлять их с прототипами, чем без прототипов). Обычно вы должны объявлять прототипы для всех ваших внешних функций (и void f()
не является прототипом).
Что касается типов возврата, все зависит от вашего намерения. Я не понимаю, как тот факт, что вы изменяете элементы массива, должен лучше возвращать long double
вместо void
.