带有指向函数指针的 C 结构?

C Struct with pointer to the function?

任何人都可以解释一下 C 中这个结构中写的是什么

struct Structure {
  int i;
  void (*function)(struct Structure*);    
 } ;

正如@jonathen-leffler 在评论中所描述的,该结构有 2 个成员。 结构中的第一个成员包含一个整数值。第二个成员是一个函数指针,该函数接受一个“指向结构结构的指针”的输入参数,returns什么都没有。

所以,第二个成员可以指向一个声明如下的函数,

void someWork(struct Structure* someStruct)
{
  //do some work on struct
  someStruct->i = 5;
}

声明初始化这种类型的结构,请按以下步骤操作,

 struct Structure myStruct;
 myStruct.i=400;
 myStruct.function = &someWork;

为了更容易引用函数指针,可以使用typedef,像这样:

 typedef void (*func)(struct Structure*);

 //assign it as
 func = &someWork;

这是一个“工作示例”:

#include <stdio.h>

struct Structure {
    int i;
    void (*function)(struct Structure *);
};

void foo(struct Structure *);
void bar(struct Structure *);

int main(void) {
    struct Structure a = {0, foo};
    struct Structure b = {42, NULL}; // don't call b.function() just yet!!
    a.function(&b);
    b.function(&a);
}

void foo(struct Structure *a) {
    if (a->function == NULL) a->function = bar;
    printf("value from foo: %d\n", a->i);
}

void bar(struct Structure *a) {
    printf("value from bar: %d\n", a->i);
}