iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言中的结构体内嵌函数用法
  • 809
分享到

C语言中的结构体内嵌函数用法

C语言结构体C语言函数结构体内嵌函数 2023-02-24 11:02:51 809人浏览 八月长安
摘要

目录C语言的结构体内嵌函数1.内嵌函数定义举例:经过真实测试2.内嵌函数的个人理解结构体嵌套函数指针解释总结C语言的结构体内嵌函数 看门见山 1.内嵌函数定义举例:经过真实测试 在函

C语言的结构体内嵌函数

看门见山

1.内嵌函数定义举例:经过真实测试

在函数中声明定义结构体

#include "fun_in_struct.h"
 
int main(int arGC, char **argv) {
    //定义结构体指针或者结构体变量,分别用->和.进行内部元素的使用
    data_store_object *obj;
    char              *Word;
 
    
     
    

在头文件中对结构体进行定义:  

typedef struct {
    char *word;
    int   count;
    void (*word_print)(char *word);
    int  (*count_print)(int count);
}data_store_object;

进行两个函数的声明,函数的定义发生在其他的源文件

void WordPrint(char *word);
int  CountPrint(int count);

2.内嵌函数的个人理解

C语言的结构体内部是可以定义函数的,就像java中定义方法一样,我们在构建对象的时候不止是可以使用它的参数,还可以使用它内部关于数据的处理函数,java中叫做方法;但是C语言并不能实现类中方法的继承,重载,重写等特性,因此用的不是很多;

C语言是可以面向对象的,面向对象是一种思想,将事物和做事的过程定义成对象,只是C语言的语法让面向对象变得不那么好用。

C语言是要转化为汇编语言再转化为机器语言运行的,在汇编语言中存在着声明代码段的过程,将一段汇编指令之前加上一个标号,而这个标号就是函数的名称,我们所说的函数名实际上代表了一段构汇编指令的初始内存地址。那么变量可以附地址,函数也是可以的,有兴趣的可以看一下汇编语言和C语言混合编程,就理解了内嵌函数中出现的函数指针。

结构体嵌套函数指针

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

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

-------------------------------------------------------- 分界线---------------------------------------------------------------

下面来看看实际项目按键的用法

总结

以上所有内容均为自己笔记,仅让自己理解为主导!

这些仅为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: C语言中的结构体内嵌函数用法

本文链接: https://www.lsjlt.com/news/197424.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • c语言怎么计算字符串长度
    在C语言中,可以使用内置的strlen()函数来计算字符串的长度。该函数位于string.h头文件中。以下是一个示例代码: #inc...
    99+
    2024-05-14
    c语言
  • c语言怎么判断三个数的大小
    可以通过比较三个数之间的大小关系来判断它们的大小。以下是一个示例代码: #include <stdio.h> int ...
    99+
    2024-05-14
    c语言
  • c++排序函数sort怎么使用
    在C++中,使用sort函数对容器中的元素进行排序,可以按照默认的升序排列,也可以自定义排序规则。 下面是一个简单的例子,对一个ve...
    99+
    2024-05-14
    c++
  • c++中string的compare函数怎么使用
    在C++中,可以使用string的compare函数来比较两个string对象的大小。该函数的原型如下: int compare(c...
    99+
    2024-05-14
    c++
  • c++中string的compare函数有什么用
    c++中string的compare函数用于比较两个字符串的大小关系。该函数返回一个整数值,表示两个字符串的比较结果。 具体来说,如...
    99+
    2024-05-14
    c++
  • c++中print函数的功能有哪些
    在C++中,通常使用std::cout来进行输出操作,而不是使用print函数。std::cout是C++标准库中的一个输出流对象,...
    99+
    2024-05-14
    c++
  • c语言数据结构怎么使用
    在C语言中,数据结构可以通过定义结构体来实现。以下是一些常见的数据结构的使用方法示例: 链表: #include <std...
    99+
    2024-05-14
    c语言
  • c++中print函数的用法是什么
    在C++中没有内置的print函数,但可以使用cout来输出内容到控制台。cout是C++标准库中的一个输出流对象,可以使用<...
    99+
    2024-05-14
    c++
  • c++中concept的用法是什么
    在C++20中,Concept是一种新的语言特性,用于定义类型要求和约束。Concept可以被用来约束函数模板、类模板和普通函数的参...
    99+
    2024-05-14
    c++
  • c++中concept的作用是什么
    在C++中,concept的作用是定义一种通用的约束,用于限制模板参数的类型范围。通过使用concept,可以在编译时对模板参数进行...
    99+
    2024-05-14
    c++
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作