我试图了解现有的代码.
我们什么时候去寻找函数指针?特别喜欢下面的那个.
struct xx
{
char *a;
(*func)(char *a, void *b);
void *b;
}
struct xx ppp[] = { };
Run Code Online (Sandbox Code Playgroud)
然后检查sizeof(ppp)/ sizeof(*ppp);
我们什么时候采用这种方式?
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)