c 语言结构体struct的三种定义方式 及 typedef

时间:2023-03-08 17:46:17
c 语言结构体struct的三种定义方式  及 typedef

struct 结构体名{

成员列表;

.....

}结构体变量;

结构体类型变量的定义
结构体类型变量的定义与其它类型的变量的定义是一样的,但由于结构体类型需要针对问题事先自行定义,所以结构体类型变量的定义形式就增加了灵活性,共计有三种形式,分别介绍如下:
1) 先定义结构体类型,再定义结构体类型变量:
struct stu / *定义学生结构体类型* /
{
     char name[20]; / * 学生姓名* /
     char sex; / * 性别* /
     long num; / *学号* /
     float score[3]; / * 三科考试成绩* /
};
struct stu student1,student2;/ * 定义结构体类型变量* /
struct stu student3,student4;
用此结构体类型,可以定义更多的该结构体类型变量。
2 ) 定义结构体类型同时定义结构体类型变量:
struct data
{
     int day;
     int month;
     int year;
} time1,time2;
也可以再定义如下变量:
struct data time3,time4;
用此结构体类型,同样可以定义更多的该结构体类型变量。
3) 直接定义结构体类型变量:
struct
{
     char name[20]; / *学生姓名* /
     char sex; / *性别* /
     long num; / *学号* /
     float score[3]; / *三科考试成绩* /
} person1,person2; / *定义该结构体类型变量* /
该定义方法由于无法记录该结构体类型,所以除直接定义外,不能再定义该结构体类型变量。
4)
在C中定义一个结构体类型要用typedef:
typedef struct Student
{
int a;
}Stu;
于是在声明变量的时候就可:Stu stu1;
如果没有typedef就必须用struct Student stu1;来声明
这里的Stu实际上就是struct Student的别名。
另外这里也可以不写Student(于是也不能struct Student stu1;了)
typedef struct
{
int a;
}Stu;