------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
一、结构体
结构体指一种数据结构,它由不同类型的数据组合成一个整体,这些组合在一个整体中的数据具有一定的相关性,这样的数据结构称为结构体。
二、结构体类型声明
结构体的一般声明形式:
struct 结构体名{
成员列表
};
对结构体内的各成员都应进行类型声明,声明格式如下:
类型名 成员名;
如定义一个时间结构体
struct Time{
int year;
int month;
int day;
};
三、结构体类型变量定义
1、先声明,再定义
struct Time{
int year;
int month;
int day;
};
struct Time TodayTime;
2、声明与定义同时进行
struct Time{
int year;
int month;
int day;
}struct Time TodayTime;
3、直接定义变量
struct {
int year;
int month;
int day;
} TodayTime;
此时不出现结构体名
四、结构体变量赋值
1、定义时同时赋值
struct Time{
int year;
int month;
int day;
} TodayTime={2015,3,12};
2、先定义后赋值
struct Time{
int year;
int month;
int day;
} TodayTime;
TodayTime.year=2015;
TodayTime.month=3;
TodayTime.day=12;
注意:在赋值时,下面这种方式是错误的:
struct Time{
int year;
int month;
int day;
} TodayTime;
TodayTime={2015,3,12};//只有再定义时同时赋值,才能采取此种方式
五、结构体成员指向
结构体内部数据有两种指向方式,第一种形式为 结构体名.结构体对象。第二种为结构体名->结构体对象。
当存在结构体嵌套时,及结构体内包含着结构体成员,其指向方式为 结构体名.结构体对象.结构体对象 或者 结构体名->结构体对象->结构体对象。
六、结构体数组
当存在多组结构体数据时,可采用结构体数组方式存储。
结构体内部成员也可以为数组形式。
结构体数组赋初值也有两种方式:
1、定义时同时赋值
struct Time{
int year;
int month;
int day;
} TodayTime[]={{2015,3,12},{2014,3,5},{2016,5,16}};
2、先定义后赋值
struct Time{
int year;
int month;
int day;
} TodayTime;
TodayTime[]={{2015,3,12},{2014,3,5},{2016,5,16}};
七、结构体指针
1、指向结构体变量的指针
Struct Time TodayTime;
Struct Time *p;
p = &TodayTime;
指针p指向结构体变量TodayTime,在取值时,可以表示为TodayTime.year,也可以表示为(*p).year,此处的()不能省略,因为.的优先级高于*,如果不加括号,就相当于*(p.year).
2、指向结构体数组的指针
TodayTime[]={{2015,3,12},{2014,3,5},{2016,5,16}};
Struct Time *p;
p = TodayTime[];//此处不需要取地址符,因为数组本名本身就是存的首元素的地址
指针p指向TodayTime的首元素,若执行p+1,p指向首元素的下一个元素。