C语言 字节对齐

C语言 字节对齐结构体变量的首地址能够被其最宽基本类型成员的大小所整除 结构体每个成员相对结构体首地址的偏移量 offset 都是成员大小的整数倍 如有需要编译器会在成员之间加上填充字节 结构体的总大小为结构体最宽基本类型成员大小的整数倍 如有需要编译器会在最末一个成员之后加上填充字节 include stdio h 按结构体最宽数据类型 int 对齐 char 多少都是按 4 字节对齐 structstChar chara 5 intb stdio h

字节对齐 、pragma 、位域长度问题整理

  1. 结构体变量的首地址能够被其最宽基本类型成员的大小所整除;
  2. 结构体每个成员相对结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节;
  3. 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节。
#include <stdio.h> // 按结构体最宽数据类型int对齐 // char[*]多少都是按4字节对齐 struct stChar{ 
    char a[5]; int b; char c; }; // 按结构体最宽数据类型short对齐 struct stShort{ 
    char a; short b; }; // 按结构体最宽数据类型long对齐 struct stLong{ 
    char a; long b; }; // 按结构体最宽数据类型int对齐 // 变量c的偏移量 要为自己大小的倍数 #pragma pack(8) //为2时,sizeof为10.为8时sizeof为12  struct AA { 
    int a; char b; short c; //长度2 偏移量要提升到2的倍数6;存放位置区间[6,7] char d; }; struct AAA { 
    // 类型说明符 位域名: 位域长度 int a:2; //变量a,4位长度,只使用两位长度 sizeof(AAA)为4 char b:1; }; int main() { 
    struct stChar stChar1; struct stShort stShort1; struct stLong stLong1; struct AA stAA; struct AAA stAAA; printf("stChar = [%ld]\n", sizeof(stChar1)); printf("stShort = [%ld]\n", sizeof(stShort1)); printf("stLong = [%ld]\n", sizeof(stLong1)); printf("stAA = [%ld]\n", sizeof(stAA)); printf("stAAA = [%ld]\n", sizeof(stAAA)); return 0} 

打印结果

stChar = [16] stShort = [4] stLong = [16] stAA = [12] stAAA = [4] 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231070.html原文链接:https://javaforall.net

(0)
上一篇 2026年1月30日 下午7:01
下一篇 2026年1月30日 下午7:22


相关推荐

  • open class and closed class_demo怎么发音

    open class and closed class_demo怎么发音importos#给一个列表,生成文件夹,并在其中新建txt文件,写入文件名内容#例如彭于晏文件夹下有彭于晏.txt里面有彭于晏三个字name_list=[“彭于晏”,”周润发”,”周杰伦”,”陈道明”,”成龙”,”李连杰”,”阿里”,”百度”,”字节跳动”]#批量新建文件夹的关键formkdir()fornameinname_list:os.mkdir(name)#makedirs()通用file_name=name+”.txt”

    2025年8月19日
    4
  • javahtml转word_poi将word转换成html

    javahtml转word_poi将word转换成html最近写一个系统,需要把复文本的数据生成一个word文档,网上查了一些资料都觉的有点老了,就自己想了一个(暂时可以使用纯文本和表格),借助office本身可以存html的机制!还借助jsoup!直接上代码!引入包的: org.jsoup jsoup 1.10.3代码:/****@paramcontenthtmlbody里面需要填充的内容

    2022年10月12日
    5
  • Pycharm 搜索功能大全「建议收藏」

    Pycharm 搜索功能大全「建议收藏」目录Ctrl+N按文件名搜索py文件Ctrl+shift+N按文件名搜索所有类型的文件ctrl+shift+f全局字符串搜索ctrl+shift+a双shift搜索Ctrl+N按文件名搜索py文件ctrl+n可以搜索py文件勾选上面这个框可以搜索工程以外的文件Ctrl+shift+N按文件名搜索所有类型的文件Ctrl+shift+N可以搜索…

    2022年8月26日
    9
  • FAST_ICA MTALAB工具包下载/ICA分析/独立成分分析MATLAB安装包/ICA toolbox

    FAST_ICA MTALAB工具包下载/ICA分析/独立成分分析MATLAB安装包/ICA toolbox很多小伙伴在后台问我,MATLAB怎么进行独立成分分析(ICA)。一般来讲,ICA操作可以说是EEG里面十分总要的操作。EEGLAB这方面做的非常好,只需要RunICA就能很快的进行EEG的分析,但同样也有其弊端(懂得都懂)。这里,我提供了matlab中FAST_ICA的安装包,由于年代较较远,因此,支持的MATLAB版本可能比较老。而且网址必须外网连接,如果有直接想要安装包的小伙伴可直接关注我的公众号,回复FAST_ICA,便可免费领取。打个小广告,粉爷公众号大厂面经,刷题指南,脑…

    2022年5月13日
    45
  • TLE82453使用

    TLE82453使用颤振芯片 TLE82453 的使用 STM32F4XX 单片机实现简单的颤振效果

    2026年3月17日
    1
  • intelli idea激活码【最新永久激活】

    (intelli idea激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月31日
    123

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号