C语言求结构体大小怎么计算的

struct student{
9 char score[20];
10 int snum[10];
11

12 }stu;
13 int main()
14 {
15 printf("%d\n",sizeof(stu));
16 }

像这样算出来结果是60,如果在第11行加 char u[10]; 结果算出来是72,这是为什么呢?

c

1个回答

编译器会自动填充字节以对齐结构体元素内存位置。
深入学习可以参考:

http://www.cnblogs.com/clover-toeic/p/3853132.html

如果想禁止编译器的这种行为:
对visual studio来说,可以在文件头部加上:

 # pragma pack (1)

如果有帮助,请采纳答案好吗,谢谢!

yx_uu
yx_uu 回复战在春秋: 嗯嗯,懂起了,谢谢!
大约 2 年之前 回复
fight_in_dl
战在春秋 也可以参考: http://blog.csdn.net/qq_21792169/article/details/50506449
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!