As a rule of thumb, right unary operators (like []
, ()
, etc) take preference over left ones. So, int *(*ptr)()[];
would be a pointer that points to a function that returns an array of pointers to int (get the right operators as soon as you can as you get out of the parenthesis)