类或者结构体将变量、数组和函数完美地打包在一起。
如果要存储一位同学的学号、姓名、身高、年龄、家庭地址信息,由于这些信息是不同的变量类型,不适合用一个数组来存储,那么可以使用类或结构体来存储。
一、结构体 是由多个类型不同(或相同)的数据组合而成的数据类型。
struct Person{
private:
int age,height;
double money;
string books[100];
public:
string name;
void say(){
cout<<"I'm "<<name<<endl;
}
void setAge(int a){
age=a;
}
int getAge(){
return age;
}
void addMoney(double x){
money+=x;
}
}persion_a,persion_b,persons[100];
(1)结构体变量所占内存 是所有成员变量所需内存空间的总和。对齐补齐原则 结构体变量的存储空间为最宽成员变量存储单元的整数倍,若所有成员变量相加计算出来的的总空间不是其整数倍,则补齐为它的整数倍。
结构体变量的存储空间为最宽成员变量存储单元的整数倍,
若所有成员变量相加计算出来的的总空间不是其整数倍,
则补齐为它的整数倍。
(2)结构体嵌套结构体 结构体内的成员变量是另一个结构体。
(3)结构体作为函数参数
结构体中const的使用 防止对结构体进行误操作!
(4)结构体数组
◆ 定义结构体数组 像使用int类型一样,使用结构体类型定义数组。◆ 结构体数组的初始化 定义数组的同时,直接初始化
定义数组的同时,使用{}进行初始化
◆ 访问成员变量语法:数组名[下标].成员变量
◆ 数组元素的输入
◆ 结构体数组排序 对结构体数组按分数升序排序,必须自定义排序规则。
二、联合体 关键字union,又称为联合体、共用体,联合体的声明和结构体类似,但是它的行为方式又和结构体不同,这里的行为方式主要指的是其在内存中的体现,结构体中的成员每一个占据不同的内存空间,而联合体中的所有成员共用的是内存中相同的位置。要注意的是,联合体的长度大小为最大的成员的大小。联合体的成员变量、函数的访问方式和结构体一样。