结构体
需求: 在实际编程过程中,我们希望把一些关联的数据存放在一起封装,这样方便我们使用.
应用: 结构体允许将不同类型数据组成组合型的数据结构.
结构体类型
struct 结构体类型名
{
成员列表
};
struct
{
GPIO_TypeDef* m_GPIOx; // GPIO口(SCL和SDA必须位于同一IO口)
uint16_t m_GPIOPin_SCL; // 时钟引脚
uint16_t m_GPIOPin_SDA; // 数据引脚
};
先声明结构体类型,再定义该类型变量
struct 结构体类型名
{
成员列表
};
struct 结构体类型名 变量名列表;
struct I2C_t
{
GPIO_TypeDef* m_GPIOx; // GPIO口(SCL和SDA必须位于同一IO口)
uint16_t m_GPIOPin_SCL; // 时钟引脚
uint16_t m_GPIOPin_SDA; // 数据引脚
};
struct I2C_t xxx;//xxx为定义的结构体名
...
声明的同时定义变量
struct 结构体类型名
{
成员列表
}变量名列表;
struct I2C_t
{
GPIO_TypeDef* m_GPIOx; // GPIO口(SCL和SDA必须位于同一IO口)
uint16_t m_GPIOPin_SCL; // 时钟引脚
uint16_t m_GPIOPin_SDA; // 数据引脚
}I2C1,I2C2;
不指定类型名直接定义结构体类型变量
struct
{
成员列表
}变量名列表;
struct
{
GPIO_TypeDef* m_GPIOx; // GPIO口(SCL和SDA必须位于同一IO口)
uint16_t m_GPIOPin_SCL; // 时钟引脚
uint16_t m_GPIOPin_SDA; // 数据引脚
}I2C1,I2C2;
这种写法后面无法定义新结构体变量