参考《Linux c 编程一站式学习》

void (*signal(int signum, void (*handler)(int)))(int);

1. signal 首先是一个函数类型
typedef void (*T1) (int);
T1 signal(ins signum, T1 handler);

typedef void(*T1)(int);声明了一个函数指针类型,指向的函数的返回值是void,函数的参数是int类型

handler是指针类型,并且是指向函数的指针,指向的函数的返回值是void类型,函数的参数是int类型的

signal是函数类型,函数的一个参数是int类型,另一个参数是T1类型,函数的返回值是T1类型

int (*(*fp)(void *))[10];

1. fp是一个指针

typedef int (*T1 (void *))[10];
T1 *fp;

2. T1函数类型, 函数参数是void*类型,返回值是T2类型

typedef int (*T2)[10];
typedef T2 T1(void *);
T1 *fp;

3. T2是指针类型,指向数组

总结:
fp是函数指针,指向的函数的参数是void *类型,函数的返回值是指向数组的指针