Q:

School Assignment of understanding the definition of a specific C pointer

During a C introductory course (in an Engineering University), we were asked to identify a declaration with pointers along the lines of int (*(*f[5])(void))[10];.
my current understanding of the declaration would be "an array containing 10 function pointers returning an int pointer each and not taking any args".
Could someone confirm my understanding of the declaration, and tell me if such definitions would be of any use in practice ?

A:

int (*(*f[5])(void))[10] declares (*(*f[5])(void))[10] to be an int.
Which means (*(*f[5])(void)) is an array of 10 int.
Which means (*f[5])(void) is a pointer to an array of 10 int.
Which means (*f[5]) is a function taking void and returning a pointer to an array of 10 int.
Which means f[5] is a pointer to a function taking void and returning a pointer to an array of 10 int.
Which means f is an array of 5 pointers to functions taking void and returning a pointer to an array of 10 int.

