LFMY

导航

结构体位制

一、使用:

  优点——节省空间;

  缺点——受大小端的限制,特别注意(建议用位运算取代之)。

二、注意三点:

1、只有unsigned型和int型(VC上long、short也没报错,???);

2、unsigned :0;//定义长度为0的位段时:(1)不能指定名字,否则编译不过(2)下一个位段从新的单元开始;

3、每个位段不能超过一个位单元的大小,否则编译过不去。

三、实例

1     struct A{//自身的对齐值为unsigned 4B
2         long a:3;
3         int b:23;//26bit,3B
4         unsigned c:6;
5         unsigned d:6;
6         char e;
7     } sa;
定义

struct A的自身对齐值是Max(sizeof(unsigned), sizeof(char))为4;

每个成员都赋值为3后的内存空间分布图:

0000 1100 0000 0000 0000 0000 0001 1011//a, b, c

____ ____ ____ ____ ____ ____ __00 0011//d

____ ____ ____ ____ ____ ____ 0000 0011//e注意:从下一个空间分配

 

posted on 2014-03-24 11:09  LFMY  阅读(486)  评论(0)    收藏  举报