Чтобы разбить это на себя, начинайте с самых внутренних круглых скобок и выполняйте свой путь.
(*[10]) < ---- Массив из 10 указателей
(*[10])(int *) < ------ Массив из 10 указателей на функции, которые имеют указатель на int в качестве аргумента
(void (*[10])(int *)) < ------ Массив из 10 указателей на функции, который имеет указатель на int в качестве своего аргумента и возвращает void
(*x)(void (*[10])(int *)) < ------- x является указателем на функцию, которая имеет в качестве аргумента (массив из 10 указателей на функции, который имеет указатель на int в качестве аргумента и возвращает void)
.....
Я остановился частично, но надеюсь, что это поможет.
Ответ 2
cdecl очень полезен для такого рода вещей. В нем говорится:
объявить x как указатель на функцию (массив 10 указателя на функцию (указатель на int), возвращающий void), возвращающий указатель на функцию (указатель на int), возвращающий void
Указатель на функцию, которая имеет массив из 10 указателей на функции который имеет аргумент int * и возвращаемый тип void как аргумент, и возвращает указатель на функцию, которая имеет аргумент int * и return type void.