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

构造体的大小求解

2012-08-03 
结构体的大小求解struct{char T:4char K:4unsigned short i:8unsigned long m}求sizeof(A)(1)考虑位对

结构体的大小求解
struct
{char T:4;
char K:4;
unsigned short i:8;
unsigned long m;
}
求sizeof(A)
(1)考虑位对其的值
(2)不考虑位对其的值
虚心求教,最好有详细解说 谢谢了

[解决办法]
使用:
#pragma pack( [ n] )
改变n的值,直接输出sizeof(A)不就可以看到么?自己动手试试,再去理解吧。。

[解决办法]
32位系统下,不对齐7,对齐8
相当于:
struct
{
char TandK;
unsigned short i;
unsigned long m;
}


[解决办法]
32位操作系统:
1、需要单字节对齐时如下
struct A
{char T:4;
char K:4;
 /*上面的两个char总共占8位也就是一个字节*/
 unsigned short i:8;//这个还是2字节
 unsigned long m;//这个是4字节
};
所以siziof(A)=7
 
2、需要4字节对齐时如下
struct A
{char T:4;
 char K:4;
 unsigned short i:8;
/*上面3个总共占4字节*/
 unsigned long m;//这个4字节
};
所以sizeof(A)=8

64位的操作系统只是sizeof(unsigned long)=8,上面所得结果分别再+4就是最终计算结果 

[解决办法]
struct
{char T:4;
char K:4;
unsigned short i:8;
unsigned long m;
}

32位平台,4字节对齐:
1+(1)+2+4=8

热点排行