C++结构体、联合体、枚举体及其内存
结构体:是一种特殊形态的类
结构体与类的区别:结构体与类具有不同的默认访问控制属性:
在类中,对于未指定访问控制属性的成员,其访问控制属性为私有类型;在结构体中,对于未指定任何访问控制属性的成员,其访问控制属性为公有型。
关键字:struct
定义:
Struct 结构体名称
{
公有成员;
Protected:
保护型成员
Private:
私有成员
};
什么时候用结构体而不用类:
1:主要用来保存数据,而没有什么操作的类型
2:人们习惯将结构体的数据成员设置为公有,因此这时用结构体比较方便
如果:
1:一个结构体的全部数据成员都是公共成员;
2:没有用户定义的构造函数;
3:没有基类和虚函数;
那么这个结构体可以通过下列方式初始化:
类型名 变量名 = { 成员数据1初值, 成员数据2初值, …… };
例如:
struct student
{
char name[20];//姓名
int num;//学号
int age;//年龄
float score;//分数
};
student wh={"wh",1529401160,20,98.0};
其中student为结构体的类型名;wh为结构体变量名
结构体的内存大小:
以字节最大的单位 为地址对齐标准,如 结构体中 最大为 double,8个字节,那么 比它小的单位就要凑齐 8的整数倍字节大小。
例如:
struct test1
{
char w;
int s;
double q;
}m;
char 1字节,int 4字节, double 8字节,所以以8字节对齐,总字节大小为8的倍数
8+4+1=13,而8字节对齐后,为16。
再例如:
str