c语言 位域 sizeof,含位域结构体的sizeof
使用位域的主要目的是压缩存储,其大致规则为:
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相关推荐
- 【C语言】自定义类型:结构体,位段,枚举,联合
文章目录 结构体 结构体的声明 结构体变量的定义 结构体的特殊声明 结构体的自引用 结构体的初始化 结构体内存对齐 结构体传参 位段 位段的内存分配 位段的跨平台问题 位段的应用 枚举 联合(共用体) ...
- C语言进阶--自定义类型:结构体,枚举,联合
结构体 结构体类型的声明 结构的自引用 结构体变量的定义和初始化 结构体内存对齐 结构体传参 结构体实现位段(位段的填充&可移植性) 枚举 枚举类型的定义 枚举的优点 枚举的使用 联合 联合类 ...
- c语言用数组直接填充结构体,C语言第11题:结构体数组的定义与使用 + 结构体数组排序...
C语言第11题:结构体数组的定义与使用 + 结构体数组排序 C语言第11题:结构体数组的定义与使用 + 结构体数组排序 注意: 一下赋值是不能使用的 但是在结构体中是可以直接进行赋值操作的 st[1] ...
- C语言 匿名联合体和匿名结构体
C语言 匿名联合体和匿名结构体 匿名联合体和匿名结构体顾名思义,就是没有名字的联合体和结构体,没有名字哪怎么用?拿来用? 在嵌入式数据通信里面,大部分都是使用联合体,将有实际意义的结构体和字节数组互相 ...
- C语言中函数如何返回结构体?
//#include "stdafx.h"//If the vc++6.0, with this line. #include "stdio.h" #inclu ...
- C语言学生信息管理系统(结构体数组,文件)
C语言学生信息管理系统(结构体数组,文件) 这是初学时写的一个程序,比较菜,不喜勿喷.在一个结构体里定义结构体内所有的信息(如果信息也需要分类则可以再定义一个结构体并在当前结构体内声明,我的这个代码在 ...
- Nwafu-Oj-1444 Problem l C语言实习题七——2.结构体数组的定义与引用
问题 : C语言实习题七--2.结构体数组的定义与引用 时间限制: 1 Sec 内存限制: 128 MB 提交: 4459 解决: 2011 [提交][状态][讨论版] 题目描述 定义一个职工结构 ...
- C语言的sizeof运算符计算结构体大小
C语言的sizeof运算符运算规则 sizeof运算符 **sizeof 是一个运算符,不是函数(方法).** 例子: 当想打印一个变量的存储区域大小时,可以直接写 int a = 5; printf ...
- c语言获取结构体大小sizeof,C语言sizeof求结构体数组长度
C语言sizeof求结构体数组长度 C语言sizeof求结构体数组长度 #include typedef struct ss{ char a;//偏移量为0,大小为1,0能被1整除,=1 short ...
最新文章
- 【设置Oracle 11Gr2 RAC的归档模式】
- JavaScript 异常处理
- The way of Webpack learning (II.) -- Extract common code(多页面提取公共代码)
- PHP基础系列之正则表达式(一)
- BIOS功能调用之滚屏与清屏
- 经验分享 | 二本直博浙大?我只是写了篇论文而已
- 2021百度营销通案
- 从月薪2300女工到年薪70万谷歌程序员:人生,永远不要给自己设限
- iview 后台管理系统 搭建
- Java微服务之Spring Boot on Docker,java开发面试笔试题
- win2008服务器系统功能,详解Win2008初始配置任务功能的应用
- 清空linux+history_1分钟学会的Linux小技巧,大大提高你的工作效率
- .net byte转java byte_Java 最小值之谜
- Visual Studio 2010 Beta 2 公开下载地址
- UITableView 如何设置背景颜色
- css mix-blend,CSS混合模式mix-blend-mode/background-blend-mode简介
- redhat oracle 12c 安装图解,RedHat 7 静默安装Oracle 12c
- 利用Event实现WinUI层与Bussiness层 跨层间动态提示
- java编程实现斗地主发牌
- 机械CAD软件中还能这样制作材料清单BOM表?