很难搞清楚下面是个什么鬼!!!!
int (*(*fp)(void *))[10];
分解:
1、 fp 和 * 号括在一起,说明 fp 是一个指针,指向 T1 类型:
typedef int (*T1(void *))[10]; // 用其他类型定义类型T1
T1 *fp; // fp是指向T1类型的指针
2、 T1 应该是一个函数类型,参数是 void * ,返回值是 T2 类型:
typedef int (*T2)[10]; // 用其他类型定义类型T2
typedef T2 T1(void *); // 用类型T2和其他类型定义类型T1
T1 *fp; // fp是指向T1类型的指针
3、 T2 和 * 号括在一起,应该也是个指针,指向 T3 类型:
typedef int T3[10]; // 用其他类型定义T3
typedef T3 *T2; // 用类型T3和其他类型定义类型T2
typedef T2 T1(void *); // 用类型T2和其他类型定义类型T1
T1 *fp; // fp是指向T1类型的指针
显然, T3 是一个 int 数组,由10个元素组成。