C语言typedef的疑问

最近连续碰到两题这样的题目,我根本就无法理解这里到底是什么意思
1、typedef int* (*FUNC)(int, int );表示什么含义
2、typedef void (*func_t) (int, float)表示什么含义
因为感觉和平时的typedef的使用有点不一样,以前的typedef使用都是typedef 旧类型 新类型 ,而在上面的题目中我分不清旧类型和新类型,不知道是不是在上面的使用中省略了什么吗?

还有一个选择题
C代码中可能会出现如下的结构体定义:

typedef struct holder {
  struct holder *next;
  struct holder *prev;
  char data[0];
}holder;

最后一行char data[0]的作用是?(多选)
A、方便管理内存缓冲区
B、减少内存碎片化
C、使结构体数据对齐
D、没有作用
答案是AB

感谢解答

typedef int* (*FUNC)(int, int ):定义了指针函数的别名为FUNC,其两参数都为整形,返回值为指针
typedef void (*func_t) (int, float):定义了指针函数的别名为func_t,其两参数一个为整形, 一个为浮点行,无返回值

瞅瞅这个
https://blog.csdn.net/baoendemao/article/details/41209697

请看👉 :C语言 typedef 关键字
你还可以看下c语言参考手册中的 c语言-typedef