int (*x(int))[5] says x is a function that takes an int argument, and returns a pointer to an integer array of 5 elements.
I can also use typedef to simplify x:
typedef int Array[5];
typedef Array *Array_ptr;
typedef Array_ptr Array_ptr_fn(int);
My question is, how do I use this type Array_ptr_fn?
// Define some_x to have type Array_ptr_fn,
Array_ptr_fn some_x;
// But then how do I use some_x since function cannot return array.