这种问题是很简单的,无非就是 指针 和 数组 的组合,无论是组合多少个,本质还是最简单的指针和数组
int*(*(*)[10])(void) 可以分成 int* (*)(void) 和 (*)[10],前者是个函数指针,后者是一个指向数组的指针
因此,可以写成
typedef int* (*FUNPTR)( void );
FUNPTR (*p)[10];
其中p就是一开始的 int*(*(*)[10])(void) 类型
换一种分析方法
int a[5][10];
int (*p)[10] = a;
你能看懂吗?如果你能看懂,那么将 int 类型换成 int* (*)(void) 类型就是了。