一个微软的题目(关于联合体sizeof),急求大牛详细分析下,顺便问问联合和结构的区别
typedef union record
{
LONG lIndex;
SHORT sLevel[6];
CHAR cPos;
} REC_S;
REC_SstMax,*pMax;
CHARstr[] = “Hello” ;
CHAR*pChar = str ;
ULONGulGrade = 10;
USHORTusClass = 10;
DOUBLEdWeight
UCHAR*pCharArray[10][10];
Sizeof(stMax/pMax/str/pChar/ulGrade/usClass/dWeight/pCharArray)的取值分别是多少?
[解决办法]
32位系统:
12,联合体成员最大宽度
4,指针宽度
6,数组虽说某些时候和指针等价,但在sizeof运算时并不相同,字符str数组的大小为6,含末尾的\0,每个元素占1字节
4,指针宽度
4,long 宽度
2,short宽度
8,double宽度
400,100个元素,每个元素的类型是char *指针,大小为4,故总大小为100*4