struct _thunder{ int a; char b; char c; int d; char e; }thunder; cout<<sizeof(thunder);
为什么得到的结果是16而不是20发现在charb和charc中间再加一个intg;就会变成24而加charg就还是16求解...
为什么得到的结果是16 而不是20 发现在char b 和char c 中间再加一个int g;就会变成24 而加char g就还是16 求解
展开
展开全部
你的程序里int占4个字节,char占1个字节,在int a;char b;char c;int d; char e;的结构中,int a 占4个字节,char b占1个字节,char c占一个字节,后面是int d,由于字节对齐,int d前会空2个字节,之后Int d占4个字节,后面char e占一个字节,由于字节对齐,后面空3个字节,一共是4+1+1+2(空)+4+1+3(空)=16个字节。同样由于4字节对齐的问题,后面的这个结构int a;char b;int g;char c; int d; char e;的长度为4+1+3(空)+4+1+3(空)+4+1+3(空)=24个字节。
根本原因是int在这里是4字节它开始的变量要以4字节对齐的位置开始。
根本原因是int在这里是4字节它开始的变量要以4字节对齐的位置开始。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询