zoukankan      html  css  js  c++  java
  • 结构体成员内存对齐

    #include<stdio.h>
    struct A
    {
        int A;
    };
    
    int main()
    {
        struct A a;
        printf("%d
    ",sizeof(a));
        return 0;    
    }

    运行结果:4

    #include<stdio.h>
    struct A
    {
        int a;
        int b;
    };
    
    int main()
    {
        struct A a;
        printf("%d
    ",sizeof(a));
        return 0;    
    }

    运行结果:8

    #include<stdio.h>
    struct A
    {
        int a;
        char b;
    };
    
    int main()
    {
        struct A a;
        printf("%d
    ",sizeof(a));
        return 0;    
    }

    运行结果:8

    分析:以结构体中最大的数据类型的字节为标准,随后的基础数据类型都会跟随它对齐

    #include<stdio.h>
    struct A
    {
        char a;    
        short b;    
        int c;
        short d;
        char e;
    };
    
    int main()
    {
        struct A a;
        printf("%d
    ",sizeof(a));
        return 0;    
    }

    运行结果:12

    a

    b

    c

    d

    e

    13

    14

    15

    16

    32位计算机(主流):

    long       8

    int          4

    short      2

    char       1

    #include<stdio.h>
    struct A
    {
        char a;    
        short b;    
        char c;
        int d;
        long long  e;
    };
    
    int main()
    {
        struct A a;
        printf("%d
    ",sizeof(a));
        return 0;    
    }

    运行结果:24

    a

    b

    c

    d

    e

  • 相关阅读:
    Git 总结
    .net报错大全
    对于堆和栈的理解
    html 局部打印
    c#面试问题总结
    算法题总结
    h5-plus.webview
    堆和栈,引用类型,值类型,指令,指针
    .NET framework具体解释
    前端之间的url 传值
  • 原文地址:https://www.cnblogs.com/wanghao-boke/p/11172019.html
Copyright © 2011-2022 走看看