Dev-C++中结构体的大小(C语言)

本文解析了结构体大小的计算规则,通过具体实例说明了结构体成员的偏移量及结构体大小必须为最大成员的倍数的原则,并给出了一个示例程序的运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.结论:结构体的大小=结构体中各各变量的大小之和

2 这个是一个结构体

typedef struct {
	int* array;
	int  size;
}Array; 

3.让我们用代码算算它有多大

	Array a;
	printf("这是个小测试\n");
	printf("总大小=%d\n",sizeof(a));  
	printf("int*=%d\n",sizeof(int*));
	printf("int=%d\n",sizeof(int));
	printf("????????\n");

3.运行结果
在这里插入图片描述

好尴尬,错掉了。。。。。。
4+8=12 而结构体是的大小是16个字节

4 找原因
计算结构体大小的规则:
1.每一个成员的偏移量都必须是该成员的倍数。
2.结构体的大小必须是该结构体字节数最大成员的倍数。

5.所以
(1)根据规则1,第2个数据(int)的偏移量应该是它自己个的倍数,很好,8,刚刚好是它的倍数
(2)根据规则2,最大的数据是int*,所以结构体的大小因该是它(8)的倍数,而12不是8的倍数,给结构体更大的空间,16刚好是int*的2倍。
over



参考的博客:https://www.cnblogs.com/smile-812/p/7897187.html
这个作者比我说的详细

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值