电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
问答
结构体和指针的结合
已解决
73482
个问题
已帮助
5993
位优秀工程师
结构体和指针的结合
瞎折腾
2016-09-07
浏览量:898
一直没弄明白结构体和指针的是使用方法,最近写多级菜单,参考了别人的程序,但是不能理解希望能有大神详细的解释一下!不胜感激。
void (*current_operation_index)();
uchar func_index=0;
uchar func_index;
typedef struct
{
uchar current;
uchar up;
uchar down;
uchar enter;
void (*current_operation)();
} key_table;
显示全部
单片机
关注问题
写回答
1
0
收起
我来回答
上传资料:
选择文件
文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
刘文轩
本帖最后由 LiuYang 于 2016-9-7 10:12 编辑
结构里增加了一个处理菜单项动作的函数,其实就是相当于创建了一个菜单的类便于复用。根据传入的指针来判断当前这个类对应的是哪个菜单,然后这个函数具体实现这个菜单的功能。
这样写的好处是,因为每个菜单大部分的属性是相同的,所以可以归纳到一起减少代码量,而不必为每一个菜单用不同函数名的函数来设置相同部分的东西;不同的部分就是执行的动作,靠外部传入的函数来实现,做到界面代码和业务逻辑代码的分离,减少耦合度。
上面这段代码的调用方法是,实例化这个结构体,初始化时将属性赋值,并将这个菜单的功能函数的指针保存到这个void中。由于代码不全,后面的代码可以看到有调用这个函数的地方,其实就是个回调,可以不用关心了。
发布于
2016-09-07
举报
评论 0
3
0
其他答案
数量:
6
张少峰
多用下链表就明白了
发布于
2016-09-07
举报
评论 0
0
0
汉云
这种用法,一般是在结构体中增加一个(几个)指针,将指针赋值某函数,以运行此函数进行刷屏或是按键操作。
key_table=
{
1,
2,
3,
4,
5,
menukey_function
};
其中menukey_function就是函数名。
发布于
2016-09-07
举报
评论 0
0
0
陈长兵
看看谭浩强的书
发布于
2016-09-07
举报
评论 0
0
0
石亚东
结构就是框架
发布于
2016-09-07
举报
评论 0
0
0
wambob
声明了一个函数指针 void (*current_operation_index)(); 指向一个函数的地址
结构体中的函数指针是声明中的一个
发布于
2016-09-07
举报
评论 0
0
0
huihui163
可以参考版主分享的51开发板第8讲
发布于
2016-09-08
举报
评论 0
0
0
相关问题
问题达人
换一批
文章
知识经验换现金
换一批
结构体和指针的结合
写回答
关注问题
×
我要举报该内容,理由是:
内容质量差:
内容太水、伸手党
垃圾广告信息:
广告、招聘、推广、测试内容等
偏离问答主题:
与技术无关、讨论类
与社区已有内容重复:
违规内容:
色情、暴力、血腥、敏感信息等
不友善内容:
人事攻击、挑衅辱骂、恶意行为
以上选项都不是: