结构体
关键字:struct
一种数据类型,与数组类似,但数组只能组合相同数据类型的数据,而结构体可以组合不同数据类型的数据。
用途:将数据打包,是不同类型变量的集合数组。
定义结构体变量:
struct{ char x; int y; float z; } StructName;
//char x; int y; float z;为结构体的成员,StructName为结构体的名字
引用结构体成员:
//引用结构体成员:
StructName.x = 'A';
StructName.y = 66;
StructName.z = 1.23;
//或
pStructName->x = 'A'; //pStructName为结构体的地址
pStructName->y = 66;
pStructName->z = 1.23;
因为结构体变量类型较长,所以通常用typedef更改变量类型名:
typedef struct{char x;int y;float z;} StructName_t;//将结构体struct改名为StructName_t
StructName_t a;//定义结构体,相当于struct{char x;int y;float z;} a;
StructName_t b;//定义结构体,相当于struct{char x;int y;float z;} b;
a.x = 'A';
//引用结构体a
a.y = 66;
a.z = 1.23;
b.x = 'B';
//引用结构体b
b.y = 88;
b.z = 2.45;
在配置时的结构体实际应用:
首先,用typedef和struct弄了一个结构体GPIO_InitTypeDef,所以GPIO_InitTypeDef现在是一个结构体。
接着,给定义结构体,结构体名字可以随便起,只是这里起为GPIO_InitStructure而已。
最后,引用结构体,给结构体各个成员赋值。
枚举
关键字:enum
用途:
- 定义一个取值受限制的整型变量,用于限制变量取值范围;
- 宏定义的集合;
定义、引用枚举变量:
//定义枚举变量
enum {FALSE = 0,TRUE = 1} EnumName;
//引用枚举成员
EnumName = FALSE;//相当于EnumName=0
EnumName = TRUE;// 相当于EnumName=1
//如果是EnumName =100;,反正只要不是枚举中的值,那编译器就会报错或报警
因为枚举变量类型较长,所以通常用typedef更改变量类型名
typedef enum{m=1,t=2,w=3} week_t; //注意{}里是句号,不是分号
week_t a; //定义枚举,相当于enum{m=1,t=2,w=3} a;