被小看struct,很贼的%$#

先来个测试--------------------------

 struct stru1

{

       char m1;

       double m2;

};

struct stru2

{

     int n1;

     stru1   n2;

    char * pn3;

};

sizeof(stru1)=?

sizeof(stru2)=?

这个问题时我刚刚编程时发现的,一直调试。。。

答案1:12   20   ,答案2: 16   24。

如果你中了,就写个测试看看,发现错了#¥%。

仔细分析:

stru1应该按double类型对齐,就是8个字节对齐。

stru2呢?看似与stru1无关,可是内存布局将stru2也按double类型对齐了(常规想法应该按4个字节对齐的)

因此答案为: 16   32

下面应该知道这个的答案了:

stru3

{

      int n1,n2;

      stru1 n3;

     char *pn4;

};

sizeof(stru3) = 32,和stru2一样的。

stru4

{

      int n1,n2;

      stru1 n3;

     char *pn4;

      int n5;

};

sizeof(stru4) = 32,一样的。

呵呵!写了下来,大伙别见笑)))

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值