gpt4 book ai didi

c - 在 c 中执行 switch-case(和 if-else)功能的替代方法是什么?

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

在 c 中执行 switch-case(和 if-else)功能的替代方法是什么?

最佳答案

函数指针是一种选择。考虑以下通过函数指针数组调用函数的代码段:

#include <stdio.h>

void fn0(int n) { printf ("fn0, n = %d\n",n); }
void fn1(int n) { printf ("fn1, n = %d\n",n); }
void fn2(int n) { printf ("fn2, n = %d\n",n); }
void fn3(int n) { printf ("fn3, n = %d\n",n); }

static void (*fn[])(int) = {fn0, fn1, fn2, fn3};

int main(void) {
int i;
for (i = 0; i < 4; i++)
fn[i](10-i);
return 0;
}

这会产生:

fn0, n = 10
fn1, n = 9
fn2, n = 8
fn3, n = 7

这种构造使得实现诸如有限状态机之类的东西变得非常容易,其中,而不是大量的 switch 语句或几乎无法管理的嵌套 if,您可以只使用整数状态变量来索引函数指针数组。

关于c - 在 c 中执行 switch-case(和 if-else)功能的替代方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1119415/

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