func()
{
fun1();
fun2();
fun3();
fun4();
fun5();
fun6();
..
..
..
..
fun99();
fun100();
}
在 C 程序中使用函数指针?我需要在我的程序中反复调用这个程序。
不确定这是否真的是优化,但是您使用这样的函数指针:
#include <stdio.h>
static void fun1 (void) {
printf ("1\n");
}
static void fun2 (void) {
printf ("2\n");
}
static void fun3 (void) {
printf ("3\n");
}
static void (*fn[])(void) = {
fun1, fun2, fun3
};
int main (void) {
int i;
for (i = 0; i < sizeof(fn) / sizeof(*fn); i++) {
(fn[i])();
}
return 0;
}
这个输出:
1
2
3
正如预期的那样。
您在这里所能期望的最好结果是 main
可能稍微小一些,但这被您需要函数表的事实所抵消。
它在“C 是如何工作的?”中很有用。某种方式,但在现实世界中不是那么有用。
当然,函数指针本身很有用,我已经在 C 语言中使用了相当多的状态机和面向对象的代码。只是这个特定的示例似乎是人为的。
如果你想连续执行它们,你可以使用:
int main (void) {
int i = 0;
while (1) {
(fn[i])();
i = (i + 1) % (sizeof(fn) / sizeof(*fn));
}
return 0;
}
但无论如何,将前面的 for
循环包装在 while (1)
中同样好。
我是一名优秀的程序员,十分优秀!