1、结构体
概念:存储一个可变的数据,使用变量处理。
存储同一类型的批量,使用数组。
不同类型的数据集合,使用结构体。
struct结构体名{
成员变量(类型名变量名:inta);
}[结构体变量1,结构体变量2];
定义结构体类型的变量:
struct结构体名变量名;
初始化结构体变量的方法
1)定义的同时初始化
struct结构体名{
成员变量(类型名变量名:intd);
}a,b={...赋值列表...};
2)使用结构体变量初始化
a.xxx=xxx;b.xxx=xxx;
3)定义结构体变量时初始化
Struct结构体名a={...赋值列表...};
结构体引用方法:使用结构体变量.成员变量
e.g:stu.stuid;
一种新的数据结构,内存存放是连续的。
使用指向结构体的指针进行访问。
stuct结构体名*指针名;
structstudent*p;
结构体指针指向结构体变量:
Structstudentstu;p=&stu;
使用结构体变量名作为函数的参数--->值传递
Fun(structstudentstu){}
使用指向结构体的指针作为函数的参数
Fun(structstudent*stu){}
Fun(&stu1);调用
注意:对类型是不分配空间的,只对变量分配空间。
表示结构变量成员的一般形式
结构变量名.成员名
intnNo=stBoy1.nNo;
嵌套结构变量成员的表示形式
结构变量名.成员名.成员名
intnMonth=stBoy1.stBirthday.nMonth;
2、联合体(共用体)
概念:使几个不同的变量共享同一段内存的结构称为“共用体”类型的结构。
1)联合体定义:
union联合体名{
成员变量--(成员类成员名)
}定义联合变量;
定义联合变量:
union联合体名联合体变量名;
联合体变量名.成员名1=xxx;
联合体变量名.成员名2=xxx;
成员名2就覆盖了成员名1的值
2)联合体的每个成员的首地址都是相同的
3)联合体占用内存空间:
<1>得到容纳成员变量中“最宽”的值。
<2>长度能够整除所有的成员变量的类型。
访问联合体成员变量
unionpeoplepeo;
1>peo.成员变量名
2>unionpeople*p=&peo;
P-->成员变量名
结构体变量所占内存长度是各成员占的内存长度之和,每个成员分别占有其自己的内存单元。而共用体变
量所占的内存长度等于最长的成员的长度。(需要考虑对齐)
联合体和结构体体可以互相嵌套。