结构体大小
结构体对齐原则:
- x86(linux 默认#pragma pack(4),window默认#pragma pack(8))。Linux最大支持4字节对齐。
- 方法:
- 1、取pack(n)的值(n = 1 2 4 8--),取结构体中类型最大值m。两者取小即为外对齐大小 Y= (m < n:m,n)。
- 2、将每一个结构体的成员大小与Y比较取小者为X,作为内对齐大小。
- 3、所谓按X对齐,即为地址(设起始地址为0)能被x整除的地方开始存放数据
- 4、外部对齐原则是依据Y的值,进行补空操作
结构体
1、向结构体内未初始化的指针拷贝,指针是门牌号,通常申请内存malloc再拷贝数据
2、释放结构体内指针所指向的空间(由内向外)
共用体union与枚举enum
union主要是网络编程、协议分析、内核代码
定义:结构体的大小:是由所有成员空间大小组合而成,每一个成员共用一个起始地址
高太位
判断大小端序
提高程序的可读性
指针指向谁,就保存谁的地址
enum的应用案例:
enum DAY
{
MON = 1,TUR,WED,THU,FRT,SAT,SUM
};
int main()
{
unsigned int today;
printf("please input today Num:");
scanf("%d",&today);
today = today % 7;
enum DAY day = today;
switch (day)
{
case MON:
case TUR:
case WED:
case THU:
case FRT:
printf("today is workday\n");
break;
case SAT:
case SUM:
printf("today is holiday\n");
break;
}
return 0;
}