Я натолкнулся на две декларации указателей, которые мне трудно понять. Мое понимание правил приоритета выглядит примерно так:
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])
Как я должен их читать?