C语言中sizeof 用法和疑惑
利用字节对齐原理解释不通,能有人给解释一下么
?
VS2005 32bitcpu
?
?
#include "stdio.h"
#include "stdlib.h"
#pragma pack(4)
struct LALA
{
?short st2;
?char c1;
?short st3;
?char c4;
?short st;
?char c2;
?char c3;
?long ll;
};
//============================下面的疑惑========================
struct LALA2
{
?char c1;
?short s1;
?char c2;
?long l1;
};
struct tagA
{
?char a;
?short b;
?char d;
};
typedef struct example
{
?unsigned short usA;
?unsigned long? ulA;
?unsigned short usB;
?unsigned char? ucA;
?unsigned short usC;
}example_s;
typedef struct example2
{
?? unsigned long? ulA;
?? unsigned short usA;
?? unsigned short usB;
?? unsigned short usC;
?? unsigned char? ucA;
?? unsigned char? ucReserved;
}example_s2;
void main()
{
?LALA lala;
?printf("sizeof(lala):%d\n",sizeof(lala));(16)
? LALA2 lala2;
?printf("sizeof(lala2):%d\n",sizeof(lala2));(12) //利用字节对齐原理解释不通,能有人给解释一下么
?struct tagA sta,stb[2];
?printf("sizeof(stb):%d\n",sizeof(stb));(12)
?getchar();
}