你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

结构体的简单应用

[复制链接]
STMCU小助手 发布时间:2021-1-15 15:12
结构体的简单应用
之前在写LED的程序的时候,咱们就有用到过结构体。当时我说,结构体很好用,大家可以多用用。
今天咱们来聊聊结构体的应用,今天篇幅有限,肯定不可能详尽的将结构体说明白,但是我们学知识就是为了用的,今天就主要讲讲平时怎么用结构体。
C Primer Plus (第五版)里是这么定义,我这里摘抄一小段。
在结构声明中,接下来是用一对花括号括起来的结构成员列表。每个成员变量都用它自己的声明来描述,用一个分号来结束描述。
结构体的声明有很多种方式,我这里就拿上次LED的程序来讲一下我常用的方式:
  1. typedef struct
    - K8 A1 ]( D% J
  2. {
    / Q) j( Y. ~. _& v0 j
  3.     u16 Err_num;         //故障代码7 _2 O- a* x6 i/ |
  4.     u8  Type;            //LED的类型,0:常亮,1:闪烁,2:故障提示4 ]8 x0 K7 y! J- H5 B. C
  5.     u8  Enable;          //使能LED% C! m& I1 T5 ^* i: z
  6.     u8  PolarLED;        //LED电平有效极性
    ) ]$ J* _0 z, P
  7. }LED_t;
复制代码
2 m% f4 u* C' {9 F. S- x, }' u& p
在这里,我们定义了一个新的变量类型,就类似于u8 ,u16这样的类型, 这个类型用typedef struct来定义,他的名字就是我们下面写的LED_t,所以我们可以用LED_t来定义变量。
这个变量的内容包含了花括号里面的东西。对于结构体,我是这么理解的,
结构体就类似于分组,将相关的变量分到一个组去,方便管理和应用。
打比喻的事,我不太擅长,就说一个。
公司出去组织活动,人比较多的情况下,是不是需要分一下组,然后再给每个组定个组名,方便管理。
结构体就是这个意思。如果程序里变量太多,不进行分类的话,根本没办法管理,所以需要结构体这样的变量定义来帮助管理。
好了,扯这么多,我知道可能有些人还是觉得有点绕。不如就直接说应用。
我们虽然定义了一个新的数据类型,但是还无法直接进行使用。因为它只是一个变量的类型,单独出现,并没有实际的作用。要用的话,就像u8,u16一样,也需要定义相应的变量,我们程序里就有在led.c里做了定义。
  1. LED_t  s_LED;
复制代码
! Q" O3 k% {+ C; }0 F( Z
在这里,LED_t是数据类型,s_LED是结构体变量名。
我们访问这个结构体的成员变量时,可以使用运算符“.”,我们初始化的位置就有。
  1.   s_LED.PolarLED = LED_POLAR;
复制代码

3 e$ D0 V* `; h# e
这里是给成员变量PolarLED赋值。
我认为,一般的应用,这样就差不多了。知道怎么定义的,知道怎么调用、赋值的,这就足以应付工作中80%的需求了。
当然,结构体还有很多其他的应用,比如结构体指针、结构体数组的定义和应用。这些东西,一般场合都不会用到。以后我们有时间再聊聊。
文章出处:  Yue無缺
4 h# i9 X: d" D/ D! f
赞 收藏 评论0 发布时间:2021-1-15 15:12

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版