结构体(struct)是由一系列具有相同类型或者不同类型的数据构成的数据集合,也叫结构。
1、定义结构变量的一般格式为:
struct 结构名
{
类型 变量名;
类型 变量名;
...
} 结构变量;
结构名是结构的标识符不是变量名。
类型为第二节中所讲述的五种数据类型(整型、浮点型、字符型、指针型和无值型)。
例如:
struct studentdent{
char name[10];
int number;
float score;
}stud;
这个例子定义了一个结构名为student的结构变量stu,若去掉变量名stu;就是结构体的说明。如果需要定义多个具有相同形式的结构变量时用这种方法比较方便,它先作结构说明,再用结构名来定义变量。
student stu1,stu2,stu3,....
2、结构变量的使用
结构是一个新的数据类型,因此结构变量也可以象其它类型的变量一样赋值、运算,不同的是结构变量以成员作为基本变量。
结构成员的表示方式为:
结构变量.成员名
如果将"结构变量.成员名"看成一个整体,则这个整体的数据类型与结构中该成员的数据类型相同,这样就可象前面所讲的变量那样使用。
stu.name表示结构体中nsme成员。
3、结构数组和结构指针
结构是一种新的数据类型, 同样可以有结构数组和结构指针。
1.结构数组
结构数组就是具有相同结构类型的变量集合。假如要定义一个班级20个同学的姓名、性别、年龄和成绩, 可以定义成一个结构数组。
struct studentdent{
char name[10];
int number;
float score;
}stud[20];
或者
struct studentdent{
char name[10];
int number;
float score;
}stud;
struct stu[20];
需要指出的是结构数组成员的访问是以数组元素为结构变量的, 其形式为:
结构数组元素.成员名
如stu[1].name;stu[8].age.
2.结构指针
结构指针是指向结构的指针。它由一个加在结构变量名前的"*" 操作符来定义, 例如用前面已说明的结构定义一个结构指针如下:
stu *p;
使用结构指针对结构成员的访问, 与结构变量对结构成员的访问在表达方式上有所不同。结构指针对结构成员的访问表示为:
结构指针名->结构成员
其中"->"是两个符号"-"和">"的组合,好象一个箭头指向结构成员。例如要给上面定义的结构中name和age赋值,可以用下面语句:
strcpy( p->stu.name,"lili");
p->age=20;