typedef struct DQ
{
int symbol;
int T;
float DQ_WD;
float DQ_SD;
}DQ,*pDQ;
typedef struct CGK
{
int symbol;
int CGK_T;
int ID;
char CGK_RDMODE[16];
int CGK_RDST;
float CGK_IRSTAZ;
}CGK,*pCGK;
typedef struct GYXX
{
int symbol;
char GY_DWBZ[8];
char GY_FXMS[10];
float GY_BDJD;
int GY_NUM;
}GYXX,*pGYXX;
typedef struct test
{
DQ myDQ;
CGK myCGK;
GYXX myGYXX;
}test;
传输test这样一个结构体占多少字节,好像不是简单的相加,是不是要考虑字节对齐什么的。
谁能帮忙解释一下。

解决方案 »

  1.   

    确实要考虑字节对齐,你用sizeof算一下不就行了,谁手工算这个啊
      

  2.   

    struct DQ:4+4+4+4 = 16
    struct CGK:4+4+4+16+4+4 =36
    struct GYXX:4+8+12[本来为10,按4补齐为12]+4+4 =32
    struct test:16+36+32 = 84
    要考虑字节对齐,怎么对齐,网上很多资料,找找吧
      

  3.   

    sizeof() 用不着那么麻烦。注意对齐
      

  4.   

    #pragma pack(1)class...struct ...#pragma pack(0)
      

  5.   

    sizeof(test)已经给你对齐后的答案了。
      

  6.   

    // 用sizeof()获取
    // 程序中如果有#pragma pack()