首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

数据结构union大小的计算?该如何解决

2013-01-08 
数据结构union大小的计算?请问下,union大小是以里面成员的最大占用尺寸的那个变量为极大值的吗?int _tmain

数据结构union大小的计算?
请问下,union大小是以里面成员的最大占用尺寸的那个变量为极大值的吗?

int _tmain(int argc, _TCHAR* argv[])
{
#define DOUBLEdouble
#define LONGlong
#define SHORTshort
#define CHARchar
#define ULONGunsigned long
#define USHORTunsigned short
#define UCHARunsigned char

typedef union record
{
LONG lIndex;
SHORT sLevel[6];
CHAR cPos;
} REC_S;
REC_S stMax, *pMax;
CHAR str[] = "Hello";
CHAR *pChar = str;
ULONG ulGrade = 10;
USHORT usClass = 10;
DOUBLE dWeight;
UCHAR *pCharArray[10][10];

//Sizeof(stMax/pMax/str/pChar/ulGrade/usClass/dWeight/pCharArray)的取值分别是多少?

int sz = 0;
sz = sizeof(stMax); //组合,以最大尺寸变量为准
printf("sizeof of it is = %d\n", sz);
sz = sizeof(pMax); //指针,32位机,4个字节
printf("sizeof of it is = %d\n", sz);
sz = sizeof(str); //数组,字符串长度包括尾端的\0
printf("sizeof of it is = %d\n", sz);
sz = sizeof(pChar); //指针,32位机,4个字节
printf("sizeof of it is = %d\n", sz);
sz = sizeof(ulGrade); //long,标准32,4个字节
printf("sizeof of it is = %d\n", sz);
sz = sizeof(usClass); //short,标准16,2个字节
printf("sizeof of it is = %d\n", sz);
sz = sizeof(dWeight); //double,标准64,8个字节
printf("sizeof of it is = %d\n", sz);
sz = sizeof(pCharArray); //指针数组,32位机,4个字节*个数
printf("sizeof of it is = %d\n", sz);

return 0;
}

[解决办法]
在一个union类型结构中,所有的成员公用同样的存储空间,其占用的大小为其成员中需要空间最大者

热点排行