Объявление функции внутри функции - почему?

Я читаю книгу «Программирование на C» и нашел в главе 10 пример, подобный этому:

#include <stdio.h>

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

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

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

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

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}

Я понимаю пример, но я не понимаю линиюvoid test (int *int_pointer);&nbsp;Внутриmain, Почему я определяю подписьtest&nbsp;снова? Это идиоматический C?