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

大牛们帮忙见见占了多少字节

2013-07-09 
大牛们帮忙看看占了多少字节void main(){struct stu{ int numchar name[20]char sexint agefloat scor

大牛们帮忙看看占了多少字节
void main()
{
struct stu

int num;
char name[20];
char sex;
int age;
float score;
char address[30];
}struct stu zhang,wang;


printf("%d",sizeof(zhang));
system("pause");

}
我在vs2012上面运行后说是68字节
大牛们帮忙见见占了多少字节

但是我怎么数的是2+20+1+2+4+30=59
求指教???????????????? struct sizeof
[解决办法]
说明白点吧!   由于在x86下,GCC默认按4字节对齐。 SO:

4+20+4+4+4+(30+2)=68      最后一个加2字节,是因为:  32/4=8  可以整除! 所以最后当然是68字节啦!
[解决办法]



struct stu

int num;//4
char name[20];//20
char sex;//本来是1个字节的但由于要按4个字节对齐所以为4个字节
int age;//4
float score;//4
char address[30];//32是最小的对齐数
}

步骤:
1 首先找到结构体中,各个类型所占字节情况,确定m值,最大类型所占用的字节数即为m值。m值只能为1,2,4,类型大于4的则为4.

2 以找到的M值作为对齐条件去分析原结构体,不够M个字节的则补够M个字节来对齐。

如struct A {char a,int b,short c};那么m值为4,则这个结构体在内存中的分布为    axxx b___ c_xx(_为本身占用的字节大小,x为补全后的)
又如struct B {short a, char c};则m=2,a_c_  占用4个字节的大小

以上是按照自己理解说的。
[解决办法]
首先一点。。int是4个字节。。不是2个字节。。另外,需要字节对齐。。不满4个字节的也占4个字节的空间。。所以答案为4+20+4+4+4+32 = 68。。
不明白的可以自己查一下什么是字节对齐。。

热点排行