Я зіткнувся з двома заявами вказівника, що у мене виникають проблеми з розумінням. Моє розуміння правил пріоритетності виглядає приблизно так:
Operator Precedence Associativity
(), [ ] 1 Left to Right
*, identifier 2 Right to Left
Data type 3
Але навіть враховуючи це, я не можу зрозуміти, як правильно оцінити такі приклади:
Перший приклад
float * (* (*ptr)(int))(double **,char c)
Моя оцінка:
*(ptr)
(int)
*(*ptr)(int)
*(*(*ptr)(int))
Потім,
double **
char c
Другий приклад
unsigned **( * (*ptr) [5] ) (char const *,int *)
*(ptr)
[5]
*(*ptr)[5]
*(*(*ptr)[5])
**(*(*ptr)[5])
Як я повинен їх читати?