您的位置:首页 > 其它

enum struct union

2012-12-03 10:49 405 查看
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
枚举 -- 实质上就是整形,所以 size 是 4
#include <stdio.h>

#include <stdlib.h>

union{

    int i;

    char x[2];

}a;

int main()

{

    a.x[0]=10;

    a.x[1]=1;

    printf("%d",a.i);

    return 0;

}

输出:266 (0x010A)
备注: union 与 struct 的大小与其内部定义的函数无关!!! http://blog.csdn.net/wang7890/article/details/5634854
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: