栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C语言】结构体封装同类函数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C语言】结构体封装同类函数

文章目录
  • 前言
  • 一、什么是C语言的结构体
    • 1.结构体的类型定义,与结构体变量的定义
    • 2.dypedef进行优化
  • 二、结构体封装同类型函数
    • 1.实际应用
    • 2.代码实现
  • 总结


前言

`

为了使代码的关联性更强,我们可以使用结构体将同类型的东西放在一起


一、什么是C语言的结构体 1.结构体的类型定义,与结构体变量的定义
struct complex_struct
{
    double x;
    double y;
};

//定义结构体变量方法
//第一种方法
struct complex_struct z1;
//第二种方法
struct complex_struct
{
    double x;
    double y;
}z2,z3;
2.dypedef进行优化

如果我们像上面这样写的话,那在每次定义一个新的结构体变量时,我们都要进行struct complex_struct声明一下结构体变量的类型,因此我们采用typedef(对数据类型起别名,类似于“绰号”,这里有一篇大佬博文)

//使用typedef给结构体类型一个新的别名
typedef struct 
{
    double x;
    double y;
}complex_struct;

//定义一个结构体变量
complex_struct z4;
二、结构体封装同类型函数 1.实际应用

我们在发送AT指令时需要进行封装,一种是如下图的封装:

还有一种是将其写成:AT_AT;AT_RST;AT_RESTORE;
也能实现功能,但结构与关联性上显然没有我们用结构体封装的好。

2.代码实现

//首先我们定义需要用到的函数
int at(void);
int rst(void);
int restore(void);
//定义函数结构体类型
typedef struct 
{
    int (*AT) (void);
    int (*RST) (void);
    int (*RESTORE) (void);
}AT_Command;
//定义结构体变量,对结构体变量内部成员(指针)进行赋初值,指向函数
AT_Command AT=
{
    .AT=at,
    .RST=rst,
    .RESTORE=restore,
};

void Init(void)
{//结构体成员(函数指针)指向函数,相当于调用函数
    AT.AT;
    AT.RST;
    AT.RESTORE;
}
总结

结构体封装函数有一下步骤:
1.定义被封装函数
2.定义结构体类型
3.定义结构体变量、赋初值
4.调用结构体成员即可调用函数

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/925639.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号