【C++基础】结构体 / 联合体内存布局:面试高频考点与真题解析
掌握内存布局是C/C++程序员的必修课,也是大厂面试的核心考点。本文解析内存对齐、字节序、位域等关键概念,轻松应对面试挑战!
一、基础概念
1.1 结构体(Struct)
结构体是一种用户自定义的数据类型,用于将不同类型的数据组合在一起。结构体中的每个成员都有自己独立的内存空间,存储位置连续但相互独立。例如:
struct Person { char name[20]; int age; float height;};
结构体的大小取决于所有成员的总大小加上填充字节(为了内存对齐)。
1.2 联合体(Union)
联合体也是一种用户自定义类型,所有成员共享同一块内存空间。联合体的大小等于最大成员的大小,且必须是最大对齐数的整数倍。例如:
union Data { int i; char c; float f;};
联合体的典型应用包括节省内存空间(如同一内存位置存储不同类型数据)和判断字节序。