gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 00:19:39 24 4
gpt4 key购买 nike

我正在尝试理解现有代码。

我们什么时候真正去寻找函数指针?特别喜欢下面这个。

struct xx

{
char *a;

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

void *b;

}


struct xx ppp[] = { };

然后检查 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);
}
}

关于c - 我们什么时候使用函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3429630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com