To break this down yourself, start from the inner most parentheses and work your way out.
(*[10])
<—- Array of 10 pointers(*[10])(int *)
<—— Array of 10 pointers to functions which has a pointer toint
as its argument(void (*[10])(int *))
<—— Array of 10 pointers to functions which has a pointer toint
as its argument and returnsvoid
(*x)(void (*[10])(int *))
<——-x
is a pointer to a function which has as an argument (an array of 10 pointers to functions which has a pointer to int as its argument and returnsvoid
)
…..
I stopped partway through, but hopefully that helps.