结构体
结构体就是用户自己定义的一种数据类型,由不同的数据类型组成。结构体的类型由若干个成员组成,与数组不同的是,数组是具有相同数据类型的集合,而结构体类型的成员可以是不同的数据类型。
结构体类型的定义:关键字:struct 类型名 stu (满足标识符规则) 如:
struct std_info
{
int id;
char name[20];
int yu;
int shu;
int ing;
};
结构体类型定义可以在程序的开头,函数外部和函数体中,但习惯上是在程序开头。
注意:结构体类型的成员列表用花括号括起来,结构体类型定义完成时使用分号结束。
结构体类型变量的定义及初始化:
先定义结构体类型,然后再定义为结构体类型变量,定义格式为
结构体类型中的成员也可以是一个结构体类型,即结构体类型可以嵌套说明。例如
struct birth
{
int year;
int month;
int day;
};
struct stu_info
{
int id;
char name[20];
int age;
struct birth bir;
};stu1,stu2;
结构体类型变量的初始化要与简单变量相同。需要注意的时结构体类型的各成员的类型和定义的顺序。如
结构体类型数组的定义和初始化:
结构体类型数组中的每个元素都是一个结构体类型的数据。例如
struct student
{
int id;
char name;
int age;
char add[20];
}stud01[3];
结构体类型数组的初始化相当于给若干个结构体类型变量初始化,将元素的出值按顺序放在花括号中即可。
struct stu_score stu01={
.id=1001,
.name="aaa",
.score=99
},stu02={
.id=1002,
.name="bbb",
.score=98
};
也可以使用for循环录入
for(i=0;i<5;i++)
{
printf("输入第%d个学生的信息:id name score,回车分割\n",i);
scanf("%d",&edu[i].id);
getchar();
gets(edu[i].name);
scanf("%f",&edu[i].score);
}