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