[学习笔记] 如何通过函数指针实现一个花式点灯程序

[复制链接]
 楼主| gaoyang9992006 发表于 2023-5-25 15:32 | 显示全部楼层 |阅读模式
要通过函数指针实现一个花式点灯程序,你需要以下几个步骤:

定义函数指针类型:首先,你需要定义一个函数指针类型,以便能够指向不同的灯光控制函数。例如,你可以定义一个函数指针类型LightFunction,它接受一个整数参数,并返回 void。
  1. typedef void (*LightFunction)(int);
实现多个灯光控制函数:接下来,你可以实现多个不同的灯光控制函数。每个函数都应该接受一个整数参数,表示需要控制的灯的编号。这些函数可以实现不同的花式点灯效果。以下是一个示例函数,用于点亮指定编号的灯:
  1. void turnOnLight(int lightNumber) {
  2.     // 控制指定编号的灯点亮
  3.     // 实现具体的点亮逻辑
  4. }
你可以根据需要实现其他灯光控制函数,如闪烁、呼吸等等。

创建一个函数指针数组:接下来,你可以创建一个函数指针数组,并初始化它,使每个指针指向相应的灯光控制函数。数组的索引可以对应灯的编号。例如,如果你有10个灯,你可以创建一个函数指针数组lightFunctions:
  1. LightFunction lightFunctions[10];
然后,你可以为数组中的每个元素分别指定相应的灯光控制函数,例如:
  1. lightFunctions[0] = turnOnLight;
  2. // 分配其他函数指针给对应的数组元素
调用函数指针实现点灯:现在,你可以通过调用函数指针来控制灯光。根据你的需求,可以在循环中或其他地方使用函数指针来点亮、闪烁或执行其他花式点灯效果。例如,以下是一个示例循环,依次调用每个灯光控制函数:
  1. for (int i = 0; i < 10; i++) {
  2.     LightFunction currentFunction = lightFunctions[i];
  3.     currentFunction(i); // 传递灯的编号作为参数
  4. }
这样,你就可以根据具体的函数实现和调用逻辑,通过函数指针实现一个花式点灯程序了。记得根据需要添加错误处理和灯光控制函数的实际实现。

tpgf 发表于 2023-6-8 13:31 | 显示全部楼层
点灯是电子工程师的基本功,就好比是hello world之于软件工程师一般具有神圣而庄严的意义
paotangsan 发表于 2023-6-8 14:16 | 显示全部楼层
实际上就是在函数的形参那用到了指针是吗
renzheshengui 发表于 2023-6-8 14:45 | 显示全部楼层
这样做的话点灯的函数体岂不是会比较大吗?
wakayi 发表于 2023-6-8 14:58 | 显示全部楼层
有一个小小的缺点 就是点灯的花式已经被固化了是吧
wowu 发表于 2023-6-8 15:31 | 显示全部楼层
重点在于 通过这个项目加深了对定时器 io以及相关编程技巧的理解
xiaoqizi 发表于 2023-6-8 15:56 | 显示全部楼层
感觉指针真的不是那么容易操作  不好理解呀
 楼主| gaoyang9992006 发表于 2023-6-8 16:30 | 显示全部楼层
xiaoqizi 发表于 2023-6-8 15:56
感觉指针真的不是那么容易操作  不好理解呀

记住定义的公式即可。然后函数就可以像参数一样作为另外一个函数的参数传入了,有个东东叫:回调函数。
 楼主| gaoyang9992006 发表于 2023-6-8 16:33 | 显示全部楼层
wakayi 发表于 2023-6-8 14:58
有一个小小的缺点 就是点灯的花式已经被固化了是吧

不是被固化了,你可以在每个函数里实现不同的花式。只是最后通过函数指针调用它。这样可以将多种花式的函数装载到一个数组里,通过循环调用不同的函数。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2046

主题

16356

帖子

221

粉丝
快速回复 在线客服 返回列表 返回顶部