C语言结构体的空间大小

原创
2024/07/31 09:46
阅读数 82
#include <stdio.h>
struct Student1
{
    // 1、申请空间的对齐规则,最大的整数倍
    // 2、与最大的成员对齐
    short s;//先申请2个字节
    char b;//申请1个字节
    char c;//再申请一个1字节
    // 结构如下(每个方括号表示一个字节):
    //  [s][s]
    //  [b][c]
};
struct Student2
{
    short s;//先申请2个字节,剩余空着
    double b;//申请8个字节
    char c;//再申请1个字节,剩余空着
    // 结构如下(每个方括号表示一个字节):
    //  [s][s][][][][][][]
    //  [b][b][b][b][b][b][b][b]
    //  [c][][][][][][][]
    //  这样申请浪费很多空间,大小为24个字节
};
struct Student3
{
    double b;//申请8个字节
    short s;//申请2个字节
    char c;//再申请1个字节,剩余空着
    // 结构如下(每个方括号表示一个字节):
    //  [b][b][b][b][b][b][b][b]
    //  [s][s][c][][][][][]
    //  这样申请浪费很多空间
};

int main() {
    printf("Student1's size: %ld\n",sizeof(struct Student1));
    printf("Student2's size: %ld\n",sizeof(struct Student2));
    printf("Student3's size: %ld\n",sizeof(struct Student3));
    return 0;
}
C:\test\ctest.exe
Student's size: 4
Student2's size: 24
Student3's size: 16

Process finished with exit code 0

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部