重置默认对齐数


#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stddef.h> //offsetof的头文件
#pragma pack(2) //将默认对齐数改为2 默认是8
struct S
{
char a;
int b;
char c;
};
#pragma pack() //将默认对齐数默认
int main()
{

printf("%d\n",sizeof(struct S)); //8
printf("%d\n",offsetof(struct S,a)); //0
printf("%d\n",offsetof(struct S,b)); //2
printf("%d\n",offsetof(struct S,c)); //6

return 0;
}


结构体传参

传地址--不需要临时拷贝可以节省空间--也方便修改数据

[C语言] 默认对齐数、位段_#pragma



位段

节省空间

[C语言] 默认对齐数、位段_#pragma_02     

位段的弊端

剩下的15bit  以及  新开辟的32个bit  各个平台用法不同  可移植性差

[C语言] 默认对齐数、位段_位段_03