结构体嵌套函数指针

这次来记录一下结构体嵌套函数指针

这个知识点想了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这个函数。所以执行调用这个结构体成员变量的时候,会调用这个函数,因为一开始已经把函数的入口地址分配好了,只需要调用结构体成员变量就能够实现调用函数。

结构体嵌套函数指针

Original: https://blog.csdn.net/weixin_46323814/article/details/128429100
Author: 挨踢玩家
Title: 结构体嵌套函数指针

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/787516/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球