计算结构体(struct)占用空间

本文介绍了C语言中的结构体和联合体的概念,以及它们在内存中的布局和计算大小的规则。结构体通过组合不同类型的变量来描述复杂的数据对象,其大小受到内存对齐的影响。联合体则允许多个成员共享同一块内存,改变一个成员的值会影响其他成员。此外,还提到了`typedef`关键字用于给数据类型定义别名。
摘要由CSDN通过智能技术生成

struct即结构体,亦被直接称为“结构”。实际编程时,经常需要用相关的不同类型的数据来描述一个数据对象。例如,描述学生的综合信息时,需要使用学生的学号、姓名、性别、成绩以及家庭住址等不同类型的数据。但是,用相关的不同类型的数据来描述一个数据对象会使编程极为不便。因此,C语言提供了一种称为结构体(struct)的数据类型,以描述需要不同类型数据的数据对象 

如何计算struct所占空间的大小:()

有人可能觉得不就是把结构体内所有变量所占空间加起来不就可以了吗?其实,这句话只对了一半,所有变量所占空间要加起来没错,但是机器为了更加容易的取出struct里面的数据,会将里面的变量所占空间进行对齐。这是以空间换时间的一种方式

注:变量的首地址(变量的首地址即结构体第一个成员的地址)

Typedef:最基本的功能是给数据类型起个别名
union 共同体
typedef union{
long i; int k[5];char c;
}DATE:
struct data{
int cat: DATE cow;double dog;
}
too;
DATE max;
struct结构体名称
{
//成员列表
};
printf("%lu %lu\n"sizeof(struct data),sizeof(max));

union共同体

1,共同体的大小由里面最大的数据类型大小来决定。

2 ,共用体顾名思义,里面的成员都是共享一块内存,对后面的一个成员赋值,会覆盖前面的成员的值(也不奇怪,因为他们共享一块内存。但前提是成员所占字节数相同,当成员所占字节数不同时只会覆盖相应字节上的值,比如对char成员赋值就不会把整个int成员覆盖掉,因为char只占一个字节,而int占四个字节)
从代码可得共同体占用空间最大的是数组占二十个字节,结构体占12个字节

所以一共占32个字节,因为结构体所占空间的大小必须是结构体中所占字节数最大的变量的大小的整数倍。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值