yezhaohui520 发表于 2011-5-27 17:23:18

下面两段程序分别输出什么?求解释?

第一段:
        int x;
        struct B{
             int a;
               char b;
               short c;
        };
        x = sizeof(struct B);
        printf("%d\n",x);
第二段:
        int x;
        struct B{
               char b;
               int a;
               short c;
        };
        x = sizeof(struct B);
        printf("%d\n",x);

yang591561950 发表于 2011-6-11 15:35:08

两个程序段不是一样的吗,有区别吗
都输出:x=9
把结构体内定义的变量所占用的字节数据加起来就是了

zhouenff8 发表于 2011-6-15 09:52:57

是不是要考虑对齐?
我C丢给大学了

夏美932926954 发表于 2011-7-4 15:53:18

sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。

cheng118 发表于 2011-7-7 17:50:28

第一个输出8,第二个输出12;

操作系统要保持4字节对齐的哈
第一个结构体struct B{
               int a;
               char b;
               short c;
      };
系统给a分配了4字节,剩下的b和c分配了4字节,其中b占了前两个字节,c占了后两个字节。
第二个结构体struct B{
               char b;
               int a;
               short c;
      };
系统给b分配了4字节,因为后面a本身是整型就要占4字节。
系统给a也分配了4字节。
系统给c分配了4字节,尽管c只占两个字节哈

不知道这样解释明白了没,呵呵。
页: [1]
查看完整版本: 下面两段程序分别输出什么?求解释?