可以说一直被各类结构体大小问题所困扰,花了大半天时间查了一下资料,现在整理汇总如下。
sizeof:C语言中判断数据类型或者表达式长度符;不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来。
基本数据类型的大小很好计算,我们主要看一下构造数据类型的大小,包括数组,结构体和共用体。
1、数组类型,计算单个元素的大小,整个数组大小就是单个元素大小乘以元素个数。
char a[] = "abc";
char b[100] = "abc";
......
sizeof(a); // =4 , 字符数组末尾自动添加 '\0'
sizeof(b); // =100,内存中预分配的大小为100 ×1
2、结构体类型,大小不是每个结构体成员的简单相加,需要考虑到系统存储时结构体变量地址对齐的一系列问题。

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

被折叠的 条评论
为什么被折叠?



