结构体中的位段

一.什么是位段

位段 (bit-field)是以位为单位来定义结构体 (或联合体)中的成员变量所占的空间。

注意点:1.位段的成员必须是int、unsigned int 或者signed int、char

               2.位段的成员名后面有一个冒号和一个数字

struct A
{
    int a :2;  //a占两个bit位
    int b : 5;
    int c : 10;
    int d : 30;
}

二.位段的内存分配

        1.位段的空间上是按照需要以4字节(int)或者1字节(char)来开辟

        2.位段是不跨平台的,可移植程序应该避免使用位段

        3.一个位段必须储存在同一个储存单元中,不能跨两个储存单元

        例:在VS中,上述A结构体是如下图放置的。

        先放置a,b,c,剩下的空间不够放d了,再开辟一个int,放入d,所以A结构体占字节大小为8

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LqM55CD5oKs6ZOD5pyo5Li2,size_20,color_FFFFFF,t_70,g_se,x_16

下图中第一个储存单元的空闲空间放不下a5,需要再开辟一个储存单元

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LqM55CD5oKs6ZOD5pyo5Li2,size_20,color_FFFFFF,t_70,g_se,x_16

猜你喜欢

转载自blog.csdn.net/m0_63742310/article/details/123749908
今日推荐