c - 解释一下下面的代码?

标签 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);

具体来说,这一行是什么意思?

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/

相关文章:

c - 如何使用c语言编写的cgi程序上传图片文件?

arrays - 使用 #[!no_std] 通过 FFI 将数组从 C 传递到 Rust

c - getaddrinfo 抛出段错误

c++ - const 函数指针

php - 重置按钮不会重置文本区域

c++ - 赋值运算符返回

c - 为什么在 C 语言的嵌套 for 循环中 scanf() 被跳过?

python - abs() vs fabs() 速度差异和 fabs() 的优势

php - 将函数输出数组的一个键紧密地分配给变量?

python - 将多种方法设置为等于另一种方法的优雅方式