一、位段
1.什么是位段?
位段的声明与结构体是类似的,但是有一些不同,位段的成员必须是int、unsigned int、signed int、char(数组整形家族类型),位段的成员名后边有一个冒号和一个数字。
示例:
struct A
{
int a:2;
int b:5;
int c:10;
int d:30;
};
2.位段的内存分配
①位段的成员都是属于整形家族的类型
②位段的空间上是按照需要以一个字节(char)或者四个字节(int)的方式来开辟的
③位段涉及很多不确定的因素,所以位段是不跨平台的,要注重可移值的程序应该避免使用位段
struct S{
char a:3;
char b:4;
char c:5;
char d:4;
};
printf("%d\n",struct S);
以上位段是如何在内存中存储的呢?我们现在VS下运行一下这个代码。