第五天 结构体内存对齐

简单的也没成功, 目前也算是写出来问题最少的了

之后的完善

      昨天的代码搞得我心情烦闷,晚上睡觉的时候,做梦气的把键盘给砸了,后悔不已,早上起来一睁眼,下意识的就看向键盘所在地,还好,它还在。所以说遇到事情的时候千万要保持理智,不然后悔的就是自己了。要时刻提醒自己在写代码的时候可不能再拽头发了。为了缓解一下心情,今天就学了个简单点的。唉,说起来这就尴尬了,简单的都没写对,这就很捞,信心满满的去运行,结果是错的,啥也不说了,反手给自己一个大嘴巴子,以表歉意。
    这次学习的是自定义类型所占的空间大小。图一十二行,本来是想吧其中一个结构体类型,进行重命名的来展现它的不同表达形式,结果名字起的和第一个一样了。这可能就让系统君分辨不出来了,给我来了个错误提示。还有第十行,又忘了;号,低级错误,不可原谅。在定义完一个的时候最后括号外要有分号结尾,这个不能忘。开始算这两个空间大小时,我算第一个,一个字节,四个字节,一个字节,一加 六个字节。再算第二个,一,一,四,一加等于六。这答案不就是俩个六 。但现实却是残酷的,从最终的结果也能看出来,一个十二,一个八。这里面有结构体内存对齐这个说法,这也是刚学的。从我这个编译器运行的结果来看,默认对齐数应该是8,就拿第一个说说,第一个字节可以随便放,第二个就不能了,它需要先和规定的对齐数8进行比较,4和8比较选最小的4,之后要确保所存储的地方是4的倍数,所以要从第一个存储的字节后数空格,直到是4的倍数,在依次把4个字节储存 下来,第三个是一个字节可以直接存储因为后面肯定是1的倍数,所以从前往后数的话,一共有9个字节,但最终结果所需要的空间要是所存的最大字节的整数倍,因此还需要在加三个空格以保证,它是4的倍数。所以 最终的结果为12。第二个也是一样的分析,一般为了 空间的有效利用,要尽可能的把小字节的放在前面,从上面运行的结果来看,同样的字节总数,第二个明显空间更小。
    也可以用#pragma pack()设置默认对齐数。用法是:
             #pragma    pack   (想设置的默认数)
                         定义结构体
              # pragma  pack   ()      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值