首页 > 编程知识 正文

c语言结构体定义方式,结构体代码

时间:2023-05-05 10:46:10 阅读:148386 作者:2192

1、定义声明

位段成员必须声明为int、unsigned int或signed int类型(shortcharlong )。 位域定义和位域变量说明位域定义与结构定义类似,其形式如下:

结构域结构名称

{位域列表};

其中,域列表的格式如下:

类型说明符位域名:位域长度

例如,struct packed_struct {

unsigned int f1:1;

unsigned int f2:1;

unsigned int f3:1;

unsigned int f4:1;

无符号输入类型:4;

unsigned int my_int:9;

}

struct packed_struct {

unsigned int f1:1;

unsigned int f2:1;

unsigned int f3:1;

unsigned int f4:1;

无符号输入类型:4;

unsigned int my_int:9;

(面膜;

使用情况如下。 #包含

#包含

struct packed_struct {

unsigned int f1:1;

unsigned int f2:1;

unsigned int f3:1;

unsigned int f4:1;

无符号输入类型:4;

unsigned int my_int:9;

(面膜;

int main ()。

printf(%d(n ),(int ) sizeof ) structpacked_struct );

返回0;

}

2、位域作用和存储吉鲁

使用位域的主要作用是压缩存储,大致规则如下。

1 )如果相邻字段的类型相同,且其总位宽小于类型sizeof大小,则后续字段将紧靠前一个字段存储,直到无法容纳为止

2 )如果相邻位场类型相同,且总位宽大于类型sizeof大小,则后续字段将从新存储单元偏移类型大小的整数倍。

3 )相邻位域字段类型不同,各编译器具体实现有差别,VC6采用未压缩方式,Dev-C、GCC采用压缩方式;

4 )如果在位域字段之间插入了非位域字段,则不进行压缩。

5 )整个结构的总大小是最广泛的基本类型成员大小的整数倍。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。