#include <stdio.h>
#include <stdlib.h>
struct Stu
{
    char c;
    int i;
    double d;
    short s;
};
int main(void)
{

    struct Stu st;

    printf("%u,%u\n", sizeof(struct Stu),sizeof(st));
    system("pause");
    return 0;
}

结果为24???

1+4+8+2=15啊?

原因为

1.以最大类型为字节对齐宽度

2.依次填补各个成员字节

3.结尾对齐

#include <stdio.h>
#include <stdlib.h>
struct Stu
{
    char c;
    short s;
    int i;
    double d;
    
};
int main(void)
{

    struct Stu st;

    printf("%u,%u\n", sizeof(struct Stu),sizeof(st));
    system("pause");
    return 0;
}

结果为16?!!!!!

 

 posted on 2019-03-15 22:32  轻舞飞扬的饼  阅读(233)  评论(0编辑  收藏  举报