• 结构体所占字节数遵循以下原则:
  • 1、 结构体的大小等于结构体内最大成员大小的整数倍
    2、 结构体内的成员的首地址相对于结构体首地址的偏移量是其类型大小的整数倍,比如说double型成员相对于结构体的首地址的地址偏移量应该是8的倍数。
    3、 为了满足规则1和2编译器会在结构体成员之后进行字节填充!

    如题

    class A
    {
    int a;
    short b;
    int c;
    char d;
    };
    class B
    {
    double a;
    short b;
    int c;
    char d;
    };

    A中,a占4个字节,b本应占2个字节,但由于c占4个字节,c的首地址便宜量为6并不是4的倍数,所以为了满足条件2,b多占用2个字节,为了满足条件1,d占用4个字节,一共16个字节。
    B中,a占8个字节,b占2个字节,但由于c占4个字节,为了满足条件2,b多占用2个字节,即abc共占用8+4+4=16个字节,为了满足条件1,d将占用8个字节,一共24个字节。

结构体所占字节数的计算相关推荐

  1. 如何计算结构体所占字节大小

    结构体的大小并不是简单的内部结构加加加,而是有特殊的对齐规则. 一.对齐数 struct name { int a;//一个成员 char b; double c; }; 在此之前需要引入一个对齐数的 ...

  2. 关于sizeof函数获取结构体数组变量字节数的问题

    众所周知sizeof适用于获取变量或者类型字节数的函数,那么用于获取结构体数组字节数时怎么应用呢?通过测试我得出以下结论,以示例说明 typedef struct {uint8_t var1[2];u ...

  3. c语言结构体struct所占字节数求解

    原本觉的c语言学的还不错,今天看了一下c语言的有关书籍,看到求结构体大小的例子,心想这不是很简单吗,不就是把所有成员的大小加起来就行了,其实远没我想的简单,看来c语言还要继续学习哈哈. 先看一个实例 ...

  4. 关于C语言中的结构体所占的字节数 sizeof(struct)

    C语言中的结构体所占的字节数 ,用sizeof求一个结构体的大小 C语言中用sizeof求结构体所占字节数的详细方法. 一.非嵌套结构体 struct one{char a; // 1(char所占字 ...

  5. C语言经典实例:1-10例:三角求和、显示所占字节数、自增自减运算while语句输出最小值、计算快递费用、学生成绩统计

    文章目录 C语言经典实例:1-10例:三角求和.显示所占字节数.自增自减运算while语句输出最小值.计算快递费用.学生成绩统计等 1.程序的编写工具 2.项目的创建 3.C语言经典实例1-10编写的 ...

  6. C++_类和结构体所占内存大小,静态成员问题

    C++_类和结构体所占内存大小,静态成员问题 静态成员未初始化或者未调用(当然静态成员必须类外初始化才能调用)是不占内存的.静态成员不占类或结构体的内存 静态成员函数同样只声明未定义同样不占内存 指针 ...

  7. c语言字符数组所占字节数,字符串所占字节数分析

    string与strlen 字符串赋值的时候会不会在末尾自动添加'\0'? char *s="\ta\017bc"中指针变量s 指向的字符串所占字节数是6的原因. '\t' 是一个 ...

  8. c语言中大写英文字母所占字节,Java中字符编码和字符串所占字节数 .

    首 先,java中的一个char是2个字节.java采用unicode,2个字节来表示一个字符,这点与C语言中不同,C语言中采用ASCII,在大多数 系统中,一个char通常占1个字节,但是在0~12 ...

  9. java和C中基本数据类型的所占字节数对比

    java 语言所占字节数 数据类型 32位计算机 64位计算机 byte 1 1 char 2 2 int  4 4 long 8 8 float 4 4 double 8 8 引用 4 8 c  语 ...

最新文章

  1. glm.fit Warning Messages in R: algorithm didn’t converge probabilities 0/1
  2. uwsgi gevent
  3. SpringBoot项目中静态资源加载失败,那可能是自定义配置类继承了WebMvcConfigurationSupport这个类
  4. Python3有哪几种数据类型?
  5. Struts2 文件上传,下载,删除
  6. 华为表示年内没有推出搭载鸿蒙操作系统手机的计划;OpenStack或被抛弃?iPhone至少还要三年可苹果自研5G调制解调器……...
  7. dg oracle 切换模式_Oracle数据库 DGbroker三种保护模式的切换
  8. 【编译工具系列】之GCC文件关联
  9. linux usb bulk传输,2.1.1.2. USB MSC Bulk-Only (BBB) Transport
  10. rtc校准算法_CRC校验算法的实例解析
  11. python方差分析_R语言方差分析ANOVA
  12. 大数据算法_大数据挖掘十大经典算法
  13. 抓取scrapy中文文档(我的第一个爬虫)
  14. 消失的遗传力--wiki
  15. ES6模板字符串中使用循环并取值
  16. IDEA使用Git大全
  17. 炫酷的时间HTML页面,炫酷css3垂直时间轴特效
  18. 本周AI热点回顾:AI消除马赛克神器公布;Github黑暗模式正式发布;「中国AlphaFold」创生!
  19. docker中容器与容器之间通讯
  20. 在线存储 离线存储 近线存储

热门文章

  1. 《云计算》-MySqlXmind-一张图看懂MySql知识结构
  2. QT构建编译出现错误error: undefined reference to 的解决办法
  3. 改命术:怎么赚50万以上的问题
  4. 【JAVA】文件储存——File
  5. SQL实现分组排序和组内排序(相同分数并列排名)
  6. 学籍信息管理系统-------具体设计
  7. python语言发展历史
  8. 关于安装PotPlayer64出现PotPlayer 64 bit need right Try agin的问题
  9. “飞天”就是一个操作系统,最重要的功能就是资源管理;这套系统简单说就是把所有资源抽象成一台计算机,并通过互联网提供计算服务。...
  10. 什么是索引,索引的优缺点