我们什么时候使用函数指针

Tej*_*eja 1 c

我试图了解现有的代码.

我们什么时候去寻找函数指针?特别喜欢下面的那个.

struct xx

{
  char *a;

  (*func)(char *a, void *b);

  void *b;

}


struct xx ppp[] = { };
Run Code Online (Sandbox Code Playgroud)

然后检查sizeof(ppp)/ sizeof(*ppp);

我们什么时候采用这种方式?

Dav*_*vid 6

sizeof array / sizeof *array是一种查找数组中有多少元素的方法.(注意它必须是一个数组而不是一个指针.)我不确定这与你的函数指针问题有什么关系.

函数指针用于存储对函数的引用,以便稍后调用它.关键是函数指针不必总是指向同一个函数.(如果确实如此,您可以按名称引用该功能.)

这是一个基于你的代码的例子(虽然如果我知道你的代码应该做什么,我可以提供更好的代码.

char *s1 = "String one";
char *s2 = "String two";

void f(char *a, void *b) {
    /* Do something with a and b */
}
void g(char *a, void *b) {
    /* Do something else with a and b */
}

struct xx {
    char *a;
    void (*func)(char *a, void *b);
    void *b;
}

struct xx ppp[] = { {s1, f, NULL}, {s2, g, NULL} };

int main(int argc, char **argv) {
    for (int i = 0; i < (sizeof ppp / sizeof *ppp); i++) {
        ppp[i].func(ppp[i].a, ppp[i].b);
    }
}
Run Code Online (Sandbox Code Playgroud)