结构体 & 枚举:
提到结构体相信大家并不陌生,结构体顾名思义,是一种体(各种变量)的集合,方便了我们对于数据的管理和操作,在嵌入式开发中是必不可少要掌握的技能。那么我就通过举例子的方式给大家讲一下怎样使用结构体。
第一种(普通式):
我定义一个学生(Student 结构体):
①、不使用指针创建变量:
struct Student{
int age;
char name[20];
};
int main()
{
struct Student s1;
s1.age = 20;//年龄
strcpy(s1.name, "张三");
printf("%s -- %d ", s1.name, s1.age);
return 0;
}
②、使用指针创建变量
struct Student{
int age;
char name[20];
};
int main()
{
struct Student s;
struct Student *s1 = &s;
s1->age = 20;//年龄
strcpy(s1->name, "张三");
printf("%s -- %d", s1->name, s1->age);
return 0;
}
通时这个地方再加深我们对malloc函数的学习,可以这样写代码:
struct Student{
int age;
char name[20];
};
int main()
{
struct Student *s1 = (struct Student *)malloc(sizeof(struct Student));
s1->age = 20;//年龄
strcpy(s1->name, "张三");
printf("%s -- %d", s1->name, s1->age);
free(s1);
return 0;
}
第二种(typedef 重定义型):
我只写一种,指针的自己尝试写一写
typedef struct{
int age;
char name[20];
}Student;
int main()
{
Student s1;
s1.age = 20;//年龄
strcpy(s1.name, "张三");
printf("%s -- %d", s1.name, s1.age);
return 0;
}
接下来我写个函数将 结构体、枚举都包括在里面,辅助进行学习:
typedef enum{
A = 249,
B,
}Test;
typedef struct{
int age;
char name[20];
}Student;
void test(Student *s1, Test s2){
printf("我叫-%s-,我今年-%d-岁, 我不是-%d-, 我很牛B不是吗?\n",
s1->name, s1->age, s2);
}
int main()
{
Student s1;
s1.age = 20;//年龄
strcpy(s1.name, "张三");
test(&s1, B);
return 0;
}
其实这样的用法,在我们嵌入式开发中用到的非常多,我们只需记得,当我们在一个项目中有很多不同类型的变量要去处理时,我们可以将他们放到结构体里面,这样也方便我们去管理,当牵扯到多个选项供我们去选择时,我们能联想到使用枚举对其进行封装。你看这样是不是特别有意思了。