在实际生活中,有大量的由不同性质的数据构成的实体,如通信录就是由姓名、地址、电话号码等信息组成。对于这种实体,用数组是难以描述的,因此,C语言提供了一种被称为结构体造型数据类型,结构体类型为处理复杂数据类型提供了便利手段。
定义和使用结构体
结构体与数组类似,都是有若干分量组成的,与数组不同的是,结构体的分量可以是不同类型,可以通过成员变量名来访问结构体的元素。
结构体的定义说明了他的组成成员,以及每个成员的数据类型。
struct 结构体名{
数据类型 成员名1;
数据类型 成员名2;
数据类型 成员名3;
.........
}
例如定义一个结构体student,用他来存储学生的基础信息:
struct student{
int Stunumber;
char name[10];
char class[10];
}
结构体变量的说明:
struct 结构体名 结构体变量名;
引用结构体成员方法
结构体变量名.成员n
结构体变量赋值:
结构体变量名.成员n=数值
指向结构体的指针
当一个指针用来指向一个结构体变量时,称之为结构体指针变量。结构体指针变量中的值是所指向的结构变量的首地址,通过结构指针即可访问该结构变量。这与数组指正和函数指针的情况是相同的。结构体指针变量定义的一般形式为:
struct 结构体类型名 *结构体指针变量名
赋值是把结构变量的首地址赋予该指针变量,不能把结构名赋予该指针变量。如果student1是被说明为struct student类型的结构体变量则:
p=&student1;
通过结构体指针可以实现对结构体变量的赋值操作:
p->name="hps";
p->Stunumber="2015122222";
p->calss="遥感1班"
共用体
在C语言中,允许几种不同类型的变量存到到同一段内存单元中,也就是使用覆盖技术,几个变量互相覆盖。这种几个不同的变量共同占用一段内存的结构,被称为共用体类型结构,简称共用体。一般定义为:
union 共用体名{
数据类型 成员1;
数据类型 成员1;
........
}
只有定义了共用体变量才可以在之后的程序中引用它。不可以直接引用共用体变量,而只能引用共用体变量中的成员。
共用体变量名.成员名
使用typedef定义类型
在C语言中,除系统定义的类型和用户自定义的结构体、共用体等类型外,还可以使用类型说明符typedef定义新的类型来代替已有的类型。typedef语句的一般形式为:
typedef 已知类型名 新的类型名
例如:
typedef int INTERNET;