C/C++ 彻底解决结构体的sizeof问题 您所在的位置:网站首页 结构体内部数组长度 C/C++ 彻底解决结构体的sizeof问题

C/C++ 彻底解决结构体的sizeof问题

2024-07-11 13:49| 来源: 网络整理| 查看: 265

引言

相信在大多数人开始学习编程时,老师都会谈到各种数据类型的size问题。比如说一个int类型的变量大小是4byte,一个char类型的变量是1byte。这些问题都很好解决,但是当谈到一个结构体的大小时,答案往往就不那么肯定了。这个问题我困惑了很久,查找了不少资料后终于有所体会。现在特意记录下来,谈一谈计算机中各种数据类型的size到底是怎样得到的,主要涉及到以下三个方面的知识

基本数据类型的大小字节对齐编译器的设置 目录

引言目录基本数据类型的内存大小字节对齐 什么是字节对齐为什么要求对齐对齐的规则进阶1——改变结构体成员定义的顺序以节省空间进阶2——嵌套结构体的长度计算进阶3——通过排序减少填充字节数 编译器参考资料

基本数据类型的内存大小 类型32位64位char11int4大多数为4,8long48float44double88指针48

实际上这些数据类型大多数都是根据编译器来规定的,满足以下规则就行

sizeof(char) == 1 sizeof(char) = 32 sizeof(long long) * CHAR_BIT >= 64

根据这份规则,我们就可以解释为什么在32位机下long 和int都是4字节,因为只要求满足

sizeof(short)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有