关于地址对齐的小插曲

今天在面试时,一个问题引起我和老四的分歧:

一个结构体A,包含一个int然后一个char,sizeof(A)是多少?

一个结构体B,包含一个char然后一个int,sizeof(B)是多少?

老四认为是A是5Bytes,B是8Bytes,我认为是A、B都是8Bytes,不过后来我自己开始怀疑自己,感觉如果char排在结构的最后可能确实在计算所占内存时是不占用一整个内存单元的,所以结果可能确实是5,但是经过程序证明,发现还是我当初的想法是正确的:A、B都是8字节。

/*
    结构体A,一个int一个char,sizeof结构体是多少? 经过验证,答案是8
    结构体B,一个char一个int,sizeof结构体是多少?答案是8
*/
#include "stdio.h"

void main()
{
    struct A{
        int a;
        char b;
    };
    struct B{
        char b;
        int a;
    };

    printf("一个int一个char的结构体大小是=%d
",sizeof(A));
    printf("一个int一个char又一个char的结构体大小是=%d
",sizeof(B));
}
原文地址:https://www.cnblogs.com/wuqi1003/p/3362420.html