以前学过的数据类型只能定义简单的数据信息,而像学生的基本信息(比如学号,姓名,出生日期,籍贯,成绩等多个数据构成)的复杂数据,就需要相关的结构体的知识。
1.结构体类型变量的定义和引用。
(1)结构体数据
结构体定义形式:例如:
struct student
{
char name[9];
int age;
float grade;
.........
}
struct表示定义的是结构体数据类型,Student表示结构体类型名。花括号内一次列举每个成员数据的类型及其名称。结构体的成员数据也称为域。
注意:每个成员数据的类型可以是基本数据类型(如int float....)或者自定义数据类型,但不能重名。
不仅如此,使用上述自定义的Student类型,可以定义Student类型的数组s,用于存放10位学生的数据:
struct Student s[10];
2.结构体变量的使用:
struct Student a={“张三”,18,85,。。。。},b=a,c,*p=&a;
(定义了三个Student类型变量a,b,c,以及一个Student类型的指针变量p)
在访问结构体变量的成员可以通过成员运算符(.)来实现,使用格式为:
结构体变量名.成员名
例如:
strcpy(a.name,“李四”);
a.no=200140214;
再如:
strcpy(p->name,“李四”);
p->no=200140214;
struct Point
{
float x;
float y;
}
struct Point p;
为了简化变量p的定义,可以使用c语言提供的类型别名定义语句typedef为结构体类型Point取一个别名POINT,即:
typedef struct Point POINT;
(3)结构体类型嵌套:
即为在一个结构体中再嵌套使用别的结构体;
(4)结构体类型数组:
定义一个结构体变量只能表示一个实体的相关信息,若要表示多个记录则要用结构体数组。结构体数组是结构体和数组结合。
结构体数组和变量的定义形式相似:
struct Student
{
char name;
int age;
char sex;
.......
}stu[4];
或者:
struct Student
{
char name;
int age;
char sex;
.......
}
struct Student stu[4];