int* (*(*)[10])(void)
先要了解符号运算符的优先级
()、[]、->、. 这四个初等运算符优先级是最高的,而单目运算符(包括 * 指针运算符)比他们弱。
- 这里其实是省略的了名字的,我们可以人为加上一个便于理解,即变成int* (*(*p)[10])(void)所以按照优先级,我们会先看到(*p),显然他是一个指针
- 再看到后面的[10],可以得出“p是一个指向有10个元素的数组的指针”。
- 我们不看(*)[10],而前面这个*就表示为“数组的元素为指针”
- 我们再不看(*(*[10])),还剩int * (void),得出“这个指针指向的是一个参数为空,返回类型为int指针型的函数”
Result:p是一个指向包含十个元素的数组的指针,其中数组元素为指向一个参数为空且返回类型为int型指针的的函数的指针。