数据结构:使用struct
关键字struct能定义各种类型的变量集合,称为结构,并把它们视为一个单元。例如
struct Horse{ int age; int height;} silver;复制代码
这个例子声明了一个结构类型Horse。Horse不是变量名,而是一个新的类型。
Horse结构内的变量名称age和height称为成员或字段。 silver是这个Horse结构的一个实例变量,只要使用变量名称silver,它都包含两个结构成员:age和height。下面定义一个稍微复杂点的Horse结构:
struct Horse{ int age; int height; char name[20]; char father[20]; char mother[20];} dobbin = { 24,17,"Dobbin","Trigger","Flossie"}复制代码
通常可以使用sizeof来计算出结构占用的内存量。
定义结构类型和结构变量
struct Horse{ int age; int height; char name[20]; char father[20]; char mother[20];};struct Horse dobbin={ 24,17,"Dobbin","Trigger","Flossie"}复制代码
定义存储结构的新变量时,需要struct关键字,但是没有这个关键字代码看起来更简洁,使用typedef定义,声明变量时就可以删除struct关键字,例如:
typedef struct Horse Horse;复制代码
这个语句把Horse定义为struct Horse,如果把这个定义放在源文件的开头,就可以定义Horse类型的变量:
Horse trigger = { 30,15,"Trigger","Smith","Wesson"}复制代码
要引用结构成员,应该在结构变量名称的后面加上一个句点,再加上成员变量名称。
dobbin.age=12;
结构变量名称和成员名称之间的点号称为成员选择运算符。
声明结构中的结构
可以在Horse结构定义中声明Date结构,如下
struct Horse{ struct Date{ int day; int month; int year; } dob; int height; char name[20]; char father[20]; char mother[20];}复制代码
这个声明将Date结构声明放在Horse结构的定义内,因此不能再Horse结构的外部声明Date变量。 如果单独定义Date的结构变量,编译器就会报错。
struct Date my_date;