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

有关于结构体自己有关问题

2012-03-04 
有关于结构体自己问题设有以下结构类型说明和变量定义,则变量a在内存所占字节数是____________。structstud

有关于结构体自己问题
设有以下结构类型说明和变量定义,则变量a在内存所占字节数是____________。
          struct   stud
          {   char   num[5];
            int   s[2];
            double   ave;
          }   a,*p;

我这样理解;char   类型一个字节
                        int     类型4个字节
                        double   类型8个字节
那a应该表示21个字节;
但是我用VC来做。请看我调试程序
#include <iostream.h>
void   main()
{
int   temp;
            struct   stud
          {  
                  char   num[5];
                    int   s[2];
                    double   ave;
          }   a;
 
      temp=sizeof(a);
   
      cout < < "struct= " < <temp < <endl;
     
}  
运行结果   struct=24
这是为什么呢?我的那里错了



[解决办法]
对齐问题
[解决办法]
编译器会将结构体中的变量按照自动对齐原则存放在内存中,而自动对齐的规则是按照最大类型看齐,这里double类型占8字节,是最大类型,那么num和s要向它看齐,num是char[5]占5字节,则将另外3字节补0,s是int[2]占8字节,正好是8的倍数,则无须补齐
因此8+8+8 = 24

热点排行