其他分享
首页 > 其他分享> > struct 结构体分析

struct 结构体分析

作者:互联网

struct分析

1.无成员的空结构体size为 1byte

2.通过/zp可以调整对齐值,默认是8字节
//设编译对齐设定值为Zp
//设成员变量的类型为 member type
//设成员变量在结构体内的偏移量为member offset
//member offset % min(Zp,sizeof(member type)) == 0
//整个结构体变量占用内存的长度为StructSize
//定义结构体自身的对其值为StructAlig
//StructAlig = max(sizeof(member1 type),sizeof(member2 type),sizeof(member3 type).....sizeof(memberN type))
//必须满足:
StructSize % min (StructAlig,Zp) ==0
//网络数据传输时,通常把Zp设为1

struct tagPerson
{
  char szName[5];  //+0
  int nHeight;     //+8   
  char cGender;    //+16
  double dblWeight;//+24
  short nAge;   //+32
};
//sizeof tagPerson ==32
int main(int argc, char* argv[])
{

  
  struct tagPerson per = {
    "jack",
     185,
     'M',
    80.0,
    23
    };
}


结构体嵌套

设成员结构体变量的偏移量为StructOffset
设该成员结构体变量的自身的对齐值为StructAlig
必须满足
StructOffset % min(Zp,StructAlig) == 0

数据关系

进程查线程
线程查进程

标签:分析,struct,Zp,member,StructAlig,sizeof,type,结构
来源: https://www.cnblogs.com/doubleconquer/p/16386958.html