使用位域的主要目的是压缩存储,其大致规则为:

1) 如果相邻位域字段的类型相同,且其位宽之和小于类型的sizeof大小,则后面的字段将紧邻前一个字段存储,直到不能容纳为止;

2) 如果相邻位域字段的类型相同,但其位宽之和大于类型的sizeof大小,则后面的字段将从新的存储单元开始,其偏移量为其类型大小的整数倍;

3) 如果相邻的位域字段的类型不同,则各编译器的具体实现有差异,VC6采取不压缩方式,Dev-C++采取压缩方式;

4) 如果位域字段之间穿插着非位域字段,则不进行压缩;

5) 整个结构体的总大小为最宽基本类型成员大小的整数倍。

测试:

struct test

{

char a:1;

char :2;

long b:3;

char c:2;

};

test t1;

int len=sizeof(t1);   //len=12

struct test

{

char a:1;

char :2;

char b:3;

long c:2;

};

test t1;

int len=sizeof(t1);   //len=8

struct test

{

char a:1;

char :2;

char b:3;

char c:2;

};

test t1;

int len=sizeof(t1);   //len=1

=============================================================================

http://www.cppblog.com/fwxjj/archive/2006/12/18/16572.html

阅读(3884) | 评论(0) | 转发(1) |

c语言 位域 sizeof,含位域结构体的sizeof相关推荐

  1. 【C语言】自定义类型:结构体,位段,枚举,联合

    文章目录 结构体 结构体的声明 结构体变量的定义 结构体的特殊声明 结构体的自引用 结构体的初始化 结构体内存对齐 结构体传参 位段 位段的内存分配 位段的跨平台问题 位段的应用 枚举 联合(共用体) ...

  2. C语言进阶--自定义类型:结构体,枚举,联合

    结构体 结构体类型的声明 结构的自引用 结构体变量的定义和初始化 结构体内存对齐 结构体传参 结构体实现位段(位段的填充&可移植性) 枚举 枚举类型的定义 枚举的优点 枚举的使用 联合 联合类 ...

  3. c语言用数组直接填充结构体,C语言第11题:结构体数组的定义与使用 + 结构体数组排序...

    C语言第11题:结构体数组的定义与使用 + 结构体数组排序 C语言第11题:结构体数组的定义与使用 + 结构体数组排序 注意: 一下赋值是不能使用的 但是在结构体中是可以直接进行赋值操作的 st[1] ...

  4. C语言 匿名联合体和匿名结构体

    C语言 匿名联合体和匿名结构体 匿名联合体和匿名结构体顾名思义,就是没有名字的联合体和结构体,没有名字哪怎么用?拿来用? 在嵌入式数据通信里面,大部分都是使用联合体,将有实际意义的结构体和字节数组互相 ...

  5. C语言中函数如何返回结构体?

    //#include "stdafx.h"//If the vc++6.0, with this line. #include "stdio.h" #inclu ...

  6. C语言学生信息管理系统(结构体数组,文件)

    C语言学生信息管理系统(结构体数组,文件) 这是初学时写的一个程序,比较菜,不喜勿喷.在一个结构体里定义结构体内所有的信息(如果信息也需要分类则可以再定义一个结构体并在当前结构体内声明,我的这个代码在 ...

  7. Nwafu-Oj-1444 Problem l C语言实习题七——2.结构体数组的定义与引用

    问题 : C语言实习题七--2.结构体数组的定义与引用 时间限制: 1 Sec  内存限制: 128 MB 提交: 4459  解决: 2011 [提交][状态][讨论版] 题目描述 定义一个职工结构 ...

  8. C语言的sizeof运算符计算结构体大小

    C语言的sizeof运算符运算规则 sizeof运算符 **sizeof 是一个运算符,不是函数(方法).** 例子: 当想打印一个变量的存储区域大小时,可以直接写 int a = 5; printf ...

  9. c语言获取结构体大小sizeof,C语言sizeof求结构体数组长度

    C语言sizeof求结构体数组长度 C语言sizeof求结构体数组长度 #include typedef struct ss{ char a;//偏移量为0,大小为1,0能被1整除,=1 short ...

最新文章

  1. 【设置Oracle 11Gr2 RAC的归档模式】
  2. JavaScript 异常处理
  3. The way of Webpack learning (II.) -- Extract common code(多页面提取公共代码)
  4. PHP基础系列之正则表达式(一)
  5. BIOS功能调用之滚屏与清屏
  6. 经验分享 | 二本直博浙大?我只是写了篇论文而已
  7. 2021百度营销通案
  8. 从月薪2300女工到年薪70万谷歌程序员:人生,永远不要给自己设限
  9. iview 后台管理系统 搭建
  10. Java微服务之Spring Boot on Docker,java开发面试笔试题
  11. win2008服务器系统功能,详解Win2008初始配置任务功能的应用
  12. 清空linux+history_1分钟学会的Linux小技巧,大大提高你的工作效率
  13. .net byte转java byte_Java 最小值之谜
  14. Visual Studio 2010 Beta 2 公开下载地址
  15. UITableView 如何设置背景颜色
  16. css mix-blend,CSS混合模式mix-blend-mode/background-blend-mode简介
  17. redhat oracle 12c 安装图解,RedHat 7 静默安装Oracle 12c
  18. 利用Event实现WinUI层与Bussiness层 跨层间动态提示
  19. java编程实现斗地主发牌
  20. 机械CAD软件中还能这样制作材料清单BOM表?

热门文章

  1. 10.22 tcpdump:监听网络流量
  2. 基于java人体检测技术_几篇深度图人体检测论文的实现
  3. js map 排序_数组方法写给女友的一系列 JS 数组操作(建议收藏 | 内附思维导图)...
  4. 问题 F: 积木大赛(模拟)
  5. Jave之Scanner和不合法输入处理
  6. 命令行工具开发:如何快速实现命令行提示?
  7. 千万商家的智能决策引擎AnalyticDB
  8. 漫画通信:有了它,终于可以放心买买买了
  9. 《彩虹坠入》如何用视觉元素增加游戏剧情表现力?
  10. 如何优化 Linux系统