结构体的声明一般使用以下三种方法,或者使用typedef定义新的数据类型。
1. 先声明结构体,再定义结构体变量
2. 声明结构体的同时定义结构体变量
3. 直接定义结构体变量(很少使用)
或者使用typedef定义一个新的数据类型。
1. 先声明结构体,再定义结构体变量
struct student{
char no[20]; //学号
char name[20]; //姓名
char sex[5]; //性别
int age; //年龄
};
struct student stu1,stu2;
//此时stu1,stu2为student结构体变量
2. 声明结构体的同时定义结构体变量
struct student{
char no[20]; //学号
char name[20]; //姓名
char sex[5]; //性别
int age; //年龄
} stu1,stu2;
//此时stu1,stu2为student结构体变量
当然也可以继续定义新的结构体变量
struct student stu3;
3. 直接定义结构体变量(很少使用)
struct{
char no[20]; //学号
char name[20]; //姓名
char sex[5]; //性别
int age; //年龄
} stu1,stu2;
但是这种方法很少使用,因为这样定义之后无法再定义同类型的结构体变量了,除非使用typeof关键字,如果只是想使用结构体的话,这种做法反而把简单的问题复杂化了。
4. 使用typedef定义一个新的数据类型
C语言提供了typedef关键字,相当于给变量类型重新命名,这种方法有利于简化数据类型的命名,比如常用的uint_8就是unsign char类型的别名。写过嵌入式程序的人都知道ST官方提供的HAL库都是这样给数据类型重命名的。
typedef struct student{
char no[20]; //学号
char name[20]; //姓名
char sex[5]; //性别
int age; //年龄
}STUDENT;
STUDENT stu1;
这里的struct student就等于STUDENT,定义新的student类型的结构体变量时,数据类型直接写成STUEDNT就可以了。