这次来记录一下结构体嵌套函数指针
这个知识点想了2天终于搞懂了。
先看代码,试着理解一下,不理解再看我后面的解释。

解释:
首先,和平常创建一个结构体一样,唯独不同的就是里面的变量是一个函数指针,关于函数指针的内容,原理,我这里就不多解释说明了,去搜一下都有很多。我们就简单的理解为:函数指针=指向函数地址的指针变量。
所以这里的 void (*m_PrintInfo)();是一个变量,是一个变量,是一个变量(重要的事情说三遍)!
typedef struct{
char m_title[20];
char m_author[20];
int m_pages;
void (*m_PrintInfo)();
} BookType;
这个变量是干嘛的呢?是用来存放函数的入口地址的,每个函数都是有入口地址的。
BookType KEY[3]={
{"KEY1","Author1",5,ON_OFF_Pro},
{"KEY2","Author2",10,CAL_Pro},
{"KEY3","Author3",15,MENU_Pro},
};
这段代码,定义了3结构体数组,
1.每个数组里面都有该结构体的成员
2.每个数组里面都有该结构体的成员
3.每个数组里面都有该结构体的成员(重要的事情说三遍)!
也就是说,都有这些元素,这样好理解了吧。
KEY[0].m_title KEY[1].m_title KEY[2].m_title
KEY[0].m_author KEY[1].m_author KEY[2].m_author
KEY[0].m_pages KEY[1].m_pages KEY[2].m_pages
好,那么我们来看下面的这行代码
KEY[0].m_PrintInfo();
那这里是调用了哪个函数呢?通过代码可以知道,是调用了ON_OFF_Pro这个函数。所以执行调用这个结构体成员变量的时候,会调用这个函数,因为一开始已经把函数的入口地址分配好了,只需要调用结构体成员变量就能够实现调用函数。

-------------------------------------------------------- 分界线---------------------------------------------------------------
下面来看看实际项目按键的用法


说明:以上所有内容均为自己笔记,仅让自己理解为主导,如果对你有帮助,那就最好不过,共勉!

这篇博客介绍了结构体中嵌套函数指针的概念,通过实例代码展示了如何定义和使用这种结构。每个结构体成员包含函数入口地址,通过结构体变量调用成员即可执行对应的函数。文中还给出了实际项目中按键操作的运用示例。
561

被折叠的 条评论
为什么被折叠?



