typedef enum
{
ANUnknown = 0,
ANShapeFile = 1,
ANSDEDatabase = 2,
ANFileDatabase = 3,
ANRasterFile = 4
}ANDataType;
sizeof(ANDataType) 为 4
======================================================
struct AAA
{
double d;
char ss;
char s;
};
sizeof(AAA) 为 结构中长度最大的变量的倍数(遵循内存对齐的原则),如上,double 的长度为 8, 则整个为 8*2 = 16, 因为 char 长度为1,两个char 为2,仍小于8,故按8计算,若有9个char变量,则其中 8个char 合计为 8,剩余一个不
足8 按 8字节计算。比如:
struct AAA
{
double d;
char s1;
char s2;
char s3;
char s4;
char s5;
char s6;
char s7;
char s8;
char s9;
};
按结构体中的变量的长度叠加,则大小为 8+(1+1+1+1+1+1+1+1)+1 = 17, 16 < 17 < 24, 则结构体的大小为 24
比如,
struct AAA
{
double d;
char s1;
int i;
};
按结构体中的变量的长度叠加,则大小为 8+1+4 = 13, 8 < 13 < 16, 则结构体的大小为 16
======================================================
union AAA
{
double d;
int i;
};
联合,则以定义中最大的数据类型的长度为准,此联合的 size 为 8
备注: union 与 struct 的大小与其内部定义的函数无关!!!