C语言sizeof求结构体大小问题汇总

本文汇总了C语言中关于结构体大小的问题,包括sizeof的性质、结构体的字节对齐规则、嵌套结构体的计算以及面试中常见的sizeof相关问题。详细解释了结构体大小计算的规则,如成员的偏移量必须是类型大小的整数倍,并探讨了自定义sizeof函数及虚函数对大小的影响。

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

可以说一直被各类结构体大小问题所困扰,花了大半天时间查了一下资料,现在整理汇总如下。

sizeof:C语言中判断数据类型或者表达式长度符;不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来。

基本数据类型的大小很好计算,我们主要看一下构造数据类型的大小,包括数组,结构体和共用体。

1、数组类型,计算单个元素的大小,整个数组大小就是单个元素大小乘以元素个数。

char a[] = "abc";
char b[100] = "abc";
......
sizeof(a); // =4 , 字符数组末尾自动添加 '\0'
sizeof(b); // =100,内存中预分配的大小为100 ×1

2、结构体类型,大小不是每个结构体成员的简单相加,需要考虑到系统存储时结构体变量地址对齐的一系列问题。

    

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值