Mi sono imbattuto in due dichiarazioni puntatore che ho difficoltà a capire. La mia comprensione delle regole di precedenza è simile a questa:
Operator Precedence Associativity
(), [ ] 1 Left to Right
*, identifier 2 Right to Left
Data type 3
Ma anche dato questo, non riesco a capire come valutare correttamente i seguenti esempi:
Primo esempio
float * (* (*ptr)(int))(double **,char c)
La mia valutazione:
-
*(ptr) -
(int) -
*(*ptr)(int) -
*(*(*ptr)(int))
Poi,
-
double ** -
char c
Secondo esempio
unsigned **( * (*ptr) [5] ) (char const *,int *)
-
*(ptr) -
[5] -
*(*ptr)[5] -
*(*(*ptr)[5]) -
**(*(*ptr)[5])
Come dovrei leggerli?