1、枚举
枚举:一 一列举
#include <stdio.h>
enum Day
{
MON,
TUS,
WED,
THUR,
FRI,
SAT,
SUN
};
int main()
{
printf("%d\n",MON); // 默认值为 0
printf("%d\n",FRI); // 默认值为 4
enum Day d1 = MON;
return 0;
}
2、联合体(共用体)
2.1 联合体的应用
成员共用一个内存空间
#include <stdio.h>
union Un
{
char c;
int i;
};
int main()
{
union Un u;
printf("%p\n",&u);
printf("%p\n", &(u.c));
printf("%p\n", &(u.i));
return 0;
}
实际应用:判断所用系统是大端字节序存储,还是小端字节序存储
#include <stdio.h>
int check_sys()
{
union Un
{
char c;
int i;
}u;
u.i = 1;
return u.c;
/*int i = 1;
char* p = (char*)&i;
return *p;*/
}
int main()
{
int ret = check_sys();
if (1==ret)
{
printf("小端字节序存储\n");
}
else
{
printf("大端字节序存储\n");
}
return 0;
}
2.2 联合体大小的计算
1.联合体的大小至少是最大成员的大小。
2.联合体的大小需是成员最大对齐数的整数倍。
#include <stdio.h>
union Un
{
short arr[7]; //对齐数为:2
int i; //对齐数为:4
};
int main()
{
printf("%d\n",sizeof(union Un));
//联合体大小为:16
return 0;
}
文章介绍了C语言中的枚举类型,包括其默认值的使用,以及通过示例展示了如何定义和使用枚举。接着,文章讲解了联合体(共用体)的概念,强调了其成员共享内存空间的特性,并提供了判断系统字节序的实用示例。此外,还讨论了联合体大小的计算规则,即至少为最大成员的大小且需满足对齐要求。
445

被折叠的 条评论
为什么被折叠?



