gpt4 book ai didi

c - 如何对以下程序进行代码优化?

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

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) 中同样好。

关于c - 如何对以下程序进行代码优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3674466/

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