关于C语言——结构体struct的大小是如何计算的

C语言中的内存是比较复杂的,能够认识了解内存,对学习C语言能有莫大的帮助!
关于结构体的大小有如下规律:
1、结构体的大小是由n个“结构体中最大的那个类型”的大小模块组成(n<=成员个数);
2、一个模块中,可以存储多个成员,前提是多个成员的大小不超过模块存储的大小;
3、结构体中的成员按定义顺序存储。

文字表达总是不方便,我们可以用sizeof()来计算大小。

sizeof(char)   = 1
sizeof(short)  = 2
sizeof(int)    = 4
sizeof(long)   = 4
sizeof(float)  = 4
sizeof(double) = 8

下面是5个例子:

1struct Str1
	{										
		char a;		
		char b;	
		
	}str1;
sizeof(Str1)  = 2

在这里插入图片描述
结构体内最大的成员大小是sizeof(char)=1,所以str1的大小是1+1 = 2;

2struct Str2
	{
		char a;
		char b;
		int  c;
	}str2;
sizeof(Str2)  = 8

在这里插入图片描述
结构体内最大的成员大小是sizeof(int)=4,按照顺序存储,所以str1的大小是4+4 = 8;

3struct Str3
	{
		char a;
		int  c;
		char b;

	}str3;
sizeof(Str3)  = 12	

在这里插入图片描述
结构体内最大的成员大小是sizeof(int)=4,按照顺序存储,所以str1的大小是4+4+4 = 12;

4struct Str4
	{
		char a;
		char b;
		int  c;
		double d;

	}str4;
sizeof(Str4)  = 16	

在这里插入图片描述
结构体内最大的成员大小是sizeof(double)=8,按照顺序存储,所以str1的大小是8+8=16;

5struct Str5
	{
		char a;
		double f;
		char b;
		int  c;
		double d;

	}str5;
sizeof(Str5)  = 32

在这里插入图片描述
结构体内最大的成员大小是sizeof(double)=8,按照顺序存储,所以str1的大小是8+8+8+8=32。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值