I've come across two pointer declarations that I'm having trouble understanding. My understanding of precedence rules goes something like this:
Operator Precedence Associativity (), [ ] 1 Left to Right *, identifier 2 Right to Left Data type 3
But even given this, I can't seem to figure out how to evaluate the following examples correctly:
float * (* (*ptr)(int))(double **,char c)
unsigned **( * (*ptr)  ) (char const *,int *)
How should I read them?