이해하기 어려운 두 가지 포인터 선언을 보았습니다. 우선 순위 규칙에 대한 나의 이해는 다음과 같습니다.
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])
어떻게 해야 내가 그들을 읽어?