+ -
当前位置:首页 → 问答吧 → 奇怪的sizeof()!

奇怪的sizeof()!

时间:2010-08-23

来源:互联网

众所周知,sizeof()是用来计算一个变量所占用的内存的大小,以字节为单位!
可是,请看下面一段代码:
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>

  4. typedef struct student
  5. {
  6.         char name[11];
  7.         float score;
  8.         struct student *node;

  9. }STUDENT;
  10. int main(int argc, char *argv[])
  11. {
  12.       printf("the size of STUDENT is %d\n",sizeof(STUDENT));
  13.       return 0;
  14. }
复制代码
输出结果为什么会是20?不是应该是11+4+4=19吗?百思不解!
PS:上述程序是在Linux下运行的结果!

作者: zhuqing_739   发布时间: 2010-08-23

内存对齐

作者: jnjn999   发布时间: 2010-08-23

麻烦说清楚一点啊?谢谢!

作者: zhuqing_739   发布时间: 2010-08-23

google一下内存对齐就知道了。

作者: davelv   发布时间: 2010-08-23

被填充为4字节的整数倍

作者: net_robber   发布时间: 2010-08-23

你的情况应该是
11+(补了1字节)+4+4

作者: hellioncu   发布时间: 2010-08-23

哦!是这样子啊!谢谢各位大侠!小弟终于有点开窍了!

作者: zhuqing_739   发布时间: 2010-08-23

内存对齐,google去吧……

作者: daybreakcx   发布时间: 2010-08-23

奇怪的兰州!

作者: tajial   发布时间: 2010-08-23