(二)嵌入式C语言总结——struct、enum、typedef

目录

一、struct

二、enum

三、typedef


接上一篇博客 [嘻嘻]

一、struct

struct 用于定义结构体类型,其作用是将不同数据类型的数据组合在一起,构造出一个新的数据类型。struct 一般用法如下:

struct [结构体名]
{
    类型标识符   成员名 1;
    类型标识符   成员名 2;
    .
    .
    .
    类型标识符   成员名 3 ;
}结构体变量;

例如:
struct person
{
    char    name[8];
    int     age;
    char    sex[8];
    char    address[20];
}person_liu;

结构体变量(如上例中的 person_liu )可以不在定义结构体时定义,后续需要时再进行定义,格式如下:

struct  结构体名  结构体变量;

例如:
struct person
{
    char    name[8];
    int     age;
    char    sex[8];
    char    address[20];
};
struct person  person_liu;

使用这种定义方式可以同时定义多个结构体变量,例如:
struct person  person_liu, person_wang, person_shang;

结构体变量的使用如下形式:
结构体变量名.成员名

例如:
person_liu.age = 35;

STM32 开发中很多时候将 struct 与 typedef 的结合使用,具体内容下面会提及。

注意结构体内存对齐问题,接下来我将会在另一篇博客说明的。

二、enum

有时一个变量会有几种可能的取值,如一个星期有7天、每学期开始的课程、12种不同的颜色(红、橙、黄、绿、青、蓝、紫、灰、粉、黑、白、棕)等,C语言提供一种 enum 枚举类型,用来将变量或对象的所有可能的值一一列出,变量取值只限于列举出来的值。

enum 枚举型的用法如下:

enum  枚举名
{
    枚举成员   1,
    枚举成员   2,
    .
    .
    .
    枚举成员   n     // 注意最后一个成员后面是不要加逗号的

}枚举变量;

例如:
enum  Color
{
    RED,
    GREEN,
    BLACK,
    YELLOW
};

enum枚举类型是一个集合,将所有可能的取值用花括号括住,花括号的各枚举成员之间用逗号分开,最后一个枚举成员后省略逗号。enum 枚举类型以分号结束,这里的枚举变量可以省略,再后面需要再根据枚举名进行定义。

上述名为 Color 的枚举类型只有4个成员:RED, GREEN, BLACK, YELLOW,即意味着 Color 类型变量的取值只能取这4种颜色中的某一种颜色。

例如,利用 enum 定义一个 Weekdays 枚举类型名,包括7个枚举成员:从星期一到星期日,并定义枚举变量 Mydays 与 Olddays 。

enumWeekdys
{
    Monday = 1,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}Mydays, Olddays;

注意:enum 枚举类型具有自动编号功能,第一个枚举成员的默认值为整型的0,后续枚举成员的之后在前一个成员值上自动加1,也可以自定义枚举成员的值,若把第一个枚举成员的值定义为1,则第二个枚举成员的值就是常量2而不是什么变量,不能在程序中用赋值语句再对它赋值,但可以将枚举值赋给枚举变量

例如,以下两条语句是正确的

Mydays = Thursday;
Olddays = Friday;

但以下两条语句是错误的:
Tuesday = 0;
Myday = 1;

三、typedef

typedef 用于为复杂的声明定义一个简单的别名,它不是一个真正意义上的新类型。再编程中使用 typedef 的目的一般有两个:一是为变量起一个容易记忆且意义上明确的新名称;二是简化一些比较复杂的类型声明。基本格式如下:

typedef   类型名  自定义的别名;

例如:
typedef signed char int8_t;     //为数据类型 signed char 起别名 int8_t
typedef signed int  int32_t;    ///为数据类型 signed int 起别名 int32_t

STM32开发中,typedef 主要有以下三种用法。

1、typedef 的基本应用

为已知的数据类型起一个简单的别名,如上例。

2、typedef 与结构体 struct 结合使用

typedef struct
{
    char    name[8];
    int     age;
    char    sex[8];
    char    address[20];
}personn_messages;  
    
personn_messages  person       //结构体变量名.成员名
person.name;
person.age;

3、typedef 与 enum 结合使用

利用 typedef 关键字将枚举类型定义成别名,并利用该别名进行变量声明。

typedef enum
{
    Monday = 1,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}Weekdys_Typedef;

Weekdys_Typedef   weekdays;
weekdays.Monday;
weekdays.Friday;
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值