前言
关于枚举,联合体,结构体自己的理解,以及大小的计算
提示:以下是本篇文章正文内容,下面案例可供参考
一、枚举类型:(enum)
枚举是一个被命名的整型常数的集合。比如人的性别只有男女之分。
在枚举中第一个枚举成员默认为0;后面的枚举成员都是前面的枚举成员加1得到。
枚举元素不能是变量,得是常数。所以枚举元素也叫枚举常量。不能对枚举元素赋值。
元素类型没有特别声明,默认类型为int。
enum sex
{
male;
female;
};
二、结构体:(struct)
结构体是一种数据结构,是C语言中聚合数据类型的一类。结构体可以被声明为变量,指针或数组等,用以实现较复杂的数据结构。结构体的成员可以包含其他结构体,也可以包含指向自己结构体类型的指针。作用:把不同的数据组合成一个整体。
struct std
{
char* name;
char* sex;
int number;
double score;
};
三、联合体(共用体):(union)
联合体可以将不同类型的变量共占用同一块内存(相互覆盖)。联合体所有成员共用一个地址。对成员赋值会覆盖以前的值。只能使用其中一个成员。
union arr
{
char a;
int b ;
}
联合体和结构体的区别:
结构体中各成员有各自的内存空间,一个结构体变量的总长度大于等于各成员长度之和。而在联合体中,各成员共享一段内存空间,一个联合体变量的长度等于各成员中最长的长度。
四、结构体的大小计算
结构体的计算必须满足以下三点:
1.结构体变量的首地址,必须是结构体"最宽基本类型成员"大小的整数倍。
2.结构体每个成员相对于结构体首地址的偏移量都是该成员的整数倍。
3.结构体的总大小,为结构体“最宽基本类型成员”(将嵌套结构体里的基本类型也算基本类型)大小的整数倍。
总结
结构体是我们经常使用的结构我们应熟练掌握。