C++学习笔记十六之自定义数据类型

152 阅读1分钟

自定义数据类型

自定义数据类型:结构、联合、枚举、类

内存对齐(默认是以数据类型最大的字节数对齐)

  1. 结构、类所有成员内存大小之和。
  2. 联合 最大内存成员 共享一段内存
  3. 枚举 和int型内存大小相同 4个字节

自定义数据类型:成员列表按照内存大小顺序依次定义

练习代码

//内部对齐
struct MyStruct
{
	int a;
	char b;
	short c;
	char d;
};
//空自定义数据类型 其内存大小为1。
struct MyStruct1
{
	
};
union MyUnion  //4个字节对齐
{
	int n;
	short m[3];
};
union MyUnion1
{
	short n;
	char c[2];
};
int main()
{
	//定义一个联合的变量并初始化其第一个成员
	MyUnion1 m = {0x1234};
	cout << hex << (int)m.c[0] << endl;//34
	cout << hex << (int)m.c[1] <<dec<< endl;//12
	m.c[0] = 1;
	m.c[1] = -1;
	cout << m.n << endl;//-255
	cout << sizeof(MyStruct) << endl;//12
	cout << sizeof(MyStruct1) << endl;//1
	cout << sizeof(MyUnion) << endl;//8

	return 0;
}