Declaración de función dentro de la función: ¿por qué?

Estoy leyendo el libro "Programación en C" y encontré en el Capítulo 10 un ejemplo como este:

#include <stdio.h>

void test (int  *int_pointer)
{
     *int_pointer = 100;
}

int main (void)
{
     void test (int  *int_pointer);
     int  i = 50, *p = &i;

     printf ("Before the call to test i = %i\n", i);

     test (p);
     printf ("After the call to test i = %i\n", i);

     return 0;
}

Entiendo el ejemplo, pero no entiendo la línea.void test (int *int_pointer); dentro demain. ¿Por qué defino la firma detest ¿de nuevo? ¿Eso es idiomático C?

Respuestas a la pregunta(5)

Su respuesta a la pregunta