Why is this Code with integer declaration in the middle of nowhere (in-between function definition), not throwing an error?
1) Why is it syntactically correct.
2) What is the use of doing so.?   
#include <stdio.h>  
void func(int, int);
int main()
{
     int a, b;
     a = 10;
     b = 20;
     func(a, b);
     return 0;
}
void func(i, j)
int i,j;                  //why does this doesn't throw error.
{
     printf("a = i = %d\nb = j = %d\n", i, j);
}
 
     
     
    