下面的代码片段(用 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);
具体来说,这一行是什么意思?
struct T* (*f)(int, int, struct T*);
这是一个函数吗?如果是这样,为什么它没有主体,为什么似乎缺少形式参数名称?如果此函数缺少主体,它会返回什么?
还有,下面的作业是怎么回事?
f = &g;
最佳答案
行struct T* (*f)(int, int, struct T*);
,是函数指针,
在您定义函数指针的位置,它接受三个参数 (int, int, struct T*)
。
而代码 f = &g;
表示您正在将函数指针 f
分配给函数 g
。
关于c - 解释一下下面的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23023134/