解释下面的代码?

Dav*_*ith 2 c function assign

关于下面的代码片段(用C编写),我有几件事我不明白:

struct T {
int a;
int *b;
struct T *next;
} ;

struct T *p1;

struct T* (*f)(int, int, struct T*);

struct T* g(int a, int b, struct T* c)
{
    return (a > b ? c : NULL);
}

f = &g;
p1 = (*f)(4,3,p1);
Run Code Online (Sandbox Code Playgroud)

特别是,这条线是什么意思?

struct T* (*f)(int, int, struct T*);
Run Code Online (Sandbox Code Playgroud)

这是一个功能吗?如果是这样,为什么它没有正文,为什么有正式的参数名称似乎缺失?如果缺少身体,这个功能会返回什么?

另外,下面的作业是怎么回事?

f = &g;
Run Code Online (Sandbox Code Playgroud)

twi*_*wid 5

Line struct T* (*f)(int, int, struct T*);,是函数指针,在哪里定义指向函数的指针,其中有三个参数(int, int, struct T*).

而Code f = &g;意味着您正在为函数指针分配f功能g.