• 【C】---# program (n)以及C语言字符对齐的总结


    #pragma pack(n)

    当n大于结构体中内存占用最大的变量内存时,将按照最大内存变量的字节占用数进行对齐,否则,就根据n进行对齐

    情况一:

    例一:

    #pragma pack(4)

    struct node{

    int a;
    char b;
    char c;
    };

    struct node n;

    printf("%d ",sizeof(n));

    结果:测试结果为6

    例二:

    #pragma pack(4)

    struct node{

    int a;
    char b;
    int c;

    };

    struct node n;

    printf("%d ",sizeof(n));

    结果:测试结果为12

    总结:例一中,a占4字节,b占1字节,由于b和c之和不满4字节,所以b和c共占用4个字节对齐。

    例二中,a,b均一样,但是由于c占4字节,必须重新开辟4字节进行对齐,所以最终为12字节。

    情况二:

    #pragma pack(5)

    struct node{

    long a;
    char b;
    char c;
    };

    struct node n;

    printf("%d ",sizeof(n));

    根据测试,最终结果为8,可见,是根于变量n的字节占用数进行对齐的。

  • 相关阅读:
    Codeforces Round #337 (Div. 2) D. Vika and Segments 线段树 矩阵面积并
    HDU 5787 K-wolf Number 数位DP
    python画图
    python文件操作
    python matplotlib绘图
    沟通
    ipython notebook的使用
    生活
    担心承担责任
    Large-scale Scene Understanding (LSUN)
  • 原文地址:https://www.cnblogs.com/szhb-5251/p/6440564.html
Copyright © 2020-2023  润新知