当前位置: 代码迷 >> C语言 >> 关于sizeof(struct student)的问题
  详细解决方案

关于sizeof(struct student)的问题

热度:821   发布时间:2007-09-19 14:30:28.0
关于sizeof(struct student)的问题
#include<stdio.h>
struct student
{
int num[10];
char name[10];
int ave;
};
main()
{
int i;
i=sizeof(struct student);
printf("%d",i);
}
编了一个简单的测试代码,这里i的输出为什么是56啊我用的是linux gcc编译器
搜索更多相关的解决方案: student  sizeof  struct  

----------------解决方案--------------------------------------------------------

有问题吗?56在这里是这个结构占用内在单元的大小,而不是数组的长度。


----------------解决方案--------------------------------------------------------
我感觉是10+10+2=22啊!老谭的书里说是这么算,你说是怎么算的
----------------解决方案--------------------------------------------------------

你用什么编译器?TC下一个INT占两个字节,一个CHAR占一个字节,怎么会是10+10...呢??


----------------解决方案--------------------------------------------------------
回复:(学技术的)你用什么编译器?TC下一个INT占两个...
struct student
{
int num[10]; //占4*10 = 40,内存分配40
char name[10]; //占1*10 = 10,但是根据对齐原则,内存会分配12
int ave; //占4*1 = 4 ,内存分配4
};
40 + 12 + 4 = 56
----------------解决方案--------------------------------------------------------
noah_shi,
一个int怎么会是4个字节呢?


----------------解决方案--------------------------------------------------------

这个和编译器有关。VC DEVCPP下都是4个的


----------------解决方案--------------------------------------------------------
我在我的Red Hat LINUX 9.0版本上运行了一下你的程序,
也是56.
我测试了一下sizeof(int)-->4 sizeof(char)--->1


----------------解决方案--------------------------------------------------------
#include<stdio.h>
struct student
{
int ave;
int av1;
};
int main()
{
int i;
i=sizeof(struct student);
printf("%d",i);
}
结果:8

#include<stdio.h>
struct student
{
char ave[10];
};
int main()
{
int i;
i=sizeof(struct student);
printf("%d",i);
}
结果:10

#include<stdio.h>
struct student
{
int ave[10];
};
int main()
{
int i;
i=sizeof(struct student);
printf("%d",i);
}
结果:40


我也不知道,为什么会多出2个字节.



----------------解决方案--------------------------------------------------------

楼上:为什么是56呢?要是那样的话应该是54啊!!


----------------解决方案--------------------------------------------------------
  相关解决方案