c语言状态机_【C语言】有限状态机FSM

本文介绍了有限状态机FSM的基本概念及其在计算过程中的应用。详细解释了如何通过条件分支语句如if/else或switch/case实现状态机,并探讨了使用函数指针提高效率的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有限状态状态机FSM(finite state machine)是为研究有限内存的计算过程和某些语言类而抽象出的一种计算模型。有限状态自动机拥有有限数量的状态,每个状态可以迁移到零个或多个状态,输入字串决定执行哪个状态的迁移。有限状态自动机可以表示为一个有向图。

状态机实现在特定条件下的状态迁移功能,所以最容易想到的是使用条件分支语句来实现状态机框架,例如if/else语句或switch/case语句。此时可以通过相关条件来改变状态并在语句块中实现该状态下的一些功能比如输出等。使用条件语句虽然容易理解,但是对于状态过多的状态机,这种方法可能会在条件判断身上浪费时间,为了提高效率,可以使用函数指针来实现有限状态机。这种方法把状态和处理进行了直接绑定,相当于用空间换时间。

例:春夏秋冬四个状态,在对应的状态时输出此时的状态并且进行跳转;运行四个周期后(四年后)跳出。

首先,当函数指针不带参数输入时:

#include 

输出结果:

24dba1e5740af287c583357c8c80975b.png

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

#include 

得到结果:

15e5436c5c2654e765c41675fe33c836.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值