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

结构体的简单应用

[复制链接]
STMCU小助手 发布时间:2021-1-15 15:12
结构体的简单应用
之前在写LED的程序的时候,咱们就有用到过结构体。当时我说,结构体很好用,大家可以多用用。
今天咱们来聊聊结构体的应用,今天篇幅有限,肯定不可能详尽的将结构体说明白,但是我们学知识就是为了用的,今天就主要讲讲平时怎么用结构体。
C Primer Plus (第五版)里是这么定义,我这里摘抄一小段。
在结构声明中,接下来是用一对花括号括起来的结构成员列表。每个成员变量都用它自己的声明来描述,用一个分号来结束描述。
结构体的声明有很多种方式,我这里就拿上次LED的程序来讲一下我常用的方式:
  1. typedef struct
  2. {
  3.     u16 Err_num;         //故障代码
  4.     u8  Type;            //LED的类型,0:常亮,1:闪烁,2:故障提示
  5.     u8  Enable;          //使能LED
  6.     u8  PolarLED;        //LED电平有效极性
  7. }LED_t;
复制代码

在这里,我们定义了一个新的变量类型,就类似于u8 ,u16这样的类型, 这个类型用typedef struct来定义,他的名字就是我们下面写的LED_t,所以我们可以用LED_t来定义变量。
这个变量的内容包含了花括号里面的东西。对于结构体,我是这么理解的,
结构体就类似于分组,将相关的变量分到一个组去,方便管理和应用。
打比喻的事,我不太擅长,就说一个。
公司出去组织活动,人比较多的情况下,是不是需要分一下组,然后再给每个组定个组名,方便管理。
结构体就是这个意思。如果程序里变量太多,不进行分类的话,根本没办法管理,所以需要结构体这样的变量定义来帮助管理。
好了,扯这么多,我知道可能有些人还是觉得有点绕。不如就直接说应用。
我们虽然定义了一个新的数据类型,但是还无法直接进行使用。因为它只是一个变量的类型,单独出现,并没有实际的作用。要用的话,就像u8,u16一样,也需要定义相应的变量,我们程序里就有在led.c里做了定义。
  1. LED_t  s_LED;
复制代码

在这里,LED_t是数据类型,s_LED是结构体变量名。
我们访问这个结构体的成员变量时,可以使用运算符“.”,我们初始化的位置就有。
  1.   s_LED.PolarLED = LED_POLAR;
复制代码

这里是给成员变量PolarLED赋值。
我认为,一般的应用,这样就差不多了。知道怎么定义的,知道怎么调用、赋值的,这就足以应付工作中80%的需求了。
当然,结构体还有很多其他的应用,比如结构体指针、结构体数组的定义和应用。这些东西,一般场合都不会用到。以后我们有时间再聊聊。
文章出处:  Yue無缺

收藏 评论0 发布时间:2021-1-15 15:12

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版