有限状态状态机FSM(finite state machine)是为研究有限内存的计算过程和某些语言类而抽象出的一种计算模型。有限状态自动机拥有有限数量的状态,每个状态可以迁移到零个或多个状态,输入字串决定执行哪个状态的迁移。有限状态自动机可以表示为一个有向图。
状态机实现在特定条件下的状态迁移功能,所以最容易想到的是使用条件分支语句来实现状态机框架,例如if/else语句或switch/case语句。此时可以通过相关条件来改变状态并在语句块中实现该状态下的一些功能比如输出等。使用条件语句虽然容易理解,但是对于状态过多的状态机,这种方法可能会在条件判断身上浪费时间,为了提高效率,可以使用函数指针来实现有限状态机。这种方法把状态和处理进行了直接绑定,相当于用空间换时间。
例:春夏秋冬四个状态,在对应的状态时输出此时的状态并且进行跳转;运行四个周期后(四年后)跳出。
首先,当函数指针不带参数输入时:
#include
输出结果:

之后,再测试以下函数指针传入参数时,每个状态输出此时状态机运行的总步数i:
#include
得到结果:
