C语言那些小事--sizeof补齐

sizeof定义:用于计算数据类型所占的字节数。OK,说道数据类型所占字节数,那就总结下:

char  字符型 在内存占一个字节,表示范围 0~2的7次方

int 整形 在内存占四个字节 ,表示范围-2的31次方到2的31次方

float 单精度类型浮点型 在内存占 4个字节,表示范围 7位有效数字

void 空值 在内存占0字节 ,无值

double  在内存占8个字节,绝对值范围10(-37)~10(38)

言归正传,接着说sizeof。

sizeof可以用于数据类型也可以用于变量,比如sizeof(int)就是4个字节;再比如char a;sizeof (a)是1字节。

好,下面看个程序:

#include<stdio.h>

struct X{ int a;char b;int c;char d;};

void main()

{

printf("%d",sizeof(struct X));

}

答案16.为什么呢?补齐原则。有些人可能认为答案是10,如果那样的画系统会一个字节 一个字节取,效率太低了,为了提高效率char b要与int a一样,补4个字节,

后面同理。问题来了,如果是struct X{int a;char b;char c;int d;};答案就是12啦,第二个char补4个字节,自己用一个剩下3个,后面char照样可以使用前面1个字节。但后面int需要4个字节,剩余2个字节不能满足了,所以需要额外开4个字节。好了答案12出来了。还有个实验就是structX{char a; char b;char c;int d;};答案是8.从中我们可以看出,系统从前向后查看找到字节数最大的,然后从头补齐,第一个char4个字节,后面两个char享受前面剩余3个字节中的2个,后面int d字节开4个字节。

以上是个人看法,可能有些不专业,希望看到此篇文章朋友多多交流,提出宝贵的想法。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值