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