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

本文介绍了C语言中结构体的基础概念,包括类型定义、变量创建,并重点讲解了如何通过typedef进行优化。随后深入探讨了结构体在封装同类型函数中的应用,提供了实际案例和代码实现步骤,帮助读者增强代码组织性。


前言

`

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


一、什么是C语言的结构体

1.结构体的类型定义,与结构体变量的定义

struct complex_struct
{
    double x;
    double y;
};
/*定义了一个结构体,
一个结构体标识符complex_struct,
整个定义表示一个类型
注意:这定义了一个类型,复合类型,不是变量*/
//定义结构体变量方法
//第一种方法
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.调用结构体成员即可调用函数
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值