ฉันเจอข้อความประกาศสองฉบับที่ฉันมีปัญหาในการทำความเข้าใจ ความเข้าใจของฉันเกี่ยวกับกฎสำคัญกว่ามีดังนี้:
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])
ฉันควรอ่านพวกเขาอย่างไร