访谈:功能指针vs开关案例

use*_*724 7 c function-pointers state-machine switch-statement

在我的访谈中,我被要求为具有100个状态的系统实现状态机,其中每个状态又有100个事件,我回答了以下三种方法:

  • 如果别的
  • 开关的情况下
  • 函数指针

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

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

有人可以确认上述理解是否正确?

glg*_*lgl 1

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

除此之外,我认为你是对的。另外,我认为有关内存和速度的开销值得考虑,但希望足够小,最终可以被忽略。