关于下面的代码片段(用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)
Line struct T* (*f)(int, int, struct T*);
,是函数指针,在哪里定义指向函数的指针,其中有三个参数(int, int, struct T*)
.
而Code f = &g;
意味着您正在为函数指针分配f
功能g
.