Declaração de função dentro da função - por quê?

Estou lendo o livro "Programação em C" e encontrei no capítulo 10 um exemplo 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;
}

Eu entendo o exemplo, mas não entendo a linhavoid test (int *int_pointer); dentro demain. Por que defino a assinatura detest novamente? Isso é C idiomático?

questionAnswers(5)

yourAnswerToTheQuestion