Этот вопрос уже имеет ответ здесь:
Каковы различия между объявлением функции K&R и объявлением функции ANSI?
Синтаксис K&R устарел, вы можете пропустить его, если вам не нужно поддерживать очень старый код.
// K&R syntax
int foo(a, p)
int a;
char *p;
{
return 0;
}
// ANSI syntax
int foo(int a, char *p)
{
return 0;
}