c - 采访 : function pointers vs switch case

标签 c switch-statement function-pointers state-machine

在我的面试中,我被要求为一个有 100 个状态的系统实现一个状态机,其中每个状态依次有 100 个事件,我回答了以下 3 种方法:

  • 如果-否则
  • 开关盒
  • 函数指针

If-else 显然不适合这样的状态机,因此主要比较是 switch-case 与函数指针之间的比较,这是根据我的理解进行的比较:

  • 两者在速度方面几乎相同。
  • Switch-case 的模块化程度低于函数指针
  • 函数指针有更多的内存开销。

谁能确认一下上面的理解是否正确?

最佳答案

函数指针方法可能有一个变体:一个包含函数指针和其他信息的结构。因此,您可以让一个函数处理多种情况。

除此之外,我认为你是对的。另外,我会考虑值得考虑的内存和速度方面的开销,但希望小到最后可以忽略不计。

关于c - 采访 : function pointers vs switch case,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13839512/

相关文章:

c - 在 C 中打印两个给定字符之间的所有 ASCII 字符

Javascript 数组索引无法正常工作

Java Switch 在多种情况下使用变量的最佳实践

c - C中的函数指针转换

c++ - 指针类定义

python - 从 C 应用程序导入 Python 脚本时,为什么需要显式地将 os.getcwd() 添加到 sys.path 中?

c - 从 TCP/IP 流量构建文件?

regex - 在 bash 脚本中查找文件夹名称的一部分

c - 如何将 *this 指针隐式传递给结构中的函数指针

c - 警告 : initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]