一、。结构体基础知识
结构体属于聚合数据类型,C语言提供了两种聚合数据类型,数组和结构体。
数组里面保存的是同类型的元素的集合,它的每个元素是通过下标引用或者指针间接访问来选择的。
结构也是一些值的集合,这些值称为它的成员,但一个结构的各个成员可能具有不同的类型,他们需要通过名字去访问,那个成员都有自己的名字。
1.结构声明
举个例子:
struct SIMPLE
{
int a;
char b;
flaot c;
}; //注意这里必须有一个分号
这个结构体包含三个成员变量,分别为int型的a,char型的b,float型的c,SIMPLE为一个标签。这个声明把标签SIMPLE和这个成员列表联系在一起。注意这只是一个声明,并没有提供变量列表,所以它并未创建任何变量。已经声明之后的结构体struct SIMPLE 类似于int,double,它相当于一个结构体类型的标识符,可以用它来创建结构体变量。比如:
struct SIMPLE x;
struct SIMPLE y[20],*z;
这里的x,y和z都是同一类型的结构体,可以互相赋值,比如z=&x。
需要注意的是,如果不使用标签去声明结构体,必须在结构体后面直接创建结构体变量。
struct{
int a;
char b;
float c;
}x;
struct{
int a;
char b;
float c;
}y[20],*z;
这里虽然声明了两个结构体类型,而且他们的成员变量一摸一样,但是它们并不是同一类型的结构体变量,没有标签系统会认为这是两个不同类型的结构体,因此z=&x是非法的。而且这种结构体只能创建一次,无法创建第二个变量。
2.结构成员
结构体成员可以是标量、数组、指针甚至是其他结构体。
这里有一个更为复杂的例子:
struct COMPLEX