第十课 struct和union分析
C语言中的struct可以看做变量的集合
struct的问题:
空结构体占用多大内存?
10-1 空结构体的大小
C语言中的灰色地带,观点一是空结构体无意义不能存在于C语言里面(VC10.0 /BCC),观点二是空结构体为空集合,空集合为零(GCC),这两种说法都争取,因为实际工程开发不会定义空指针。
结构体与柔性数组
柔性数组即数组大小待定的数组
C语言中可以由结构体产生柔性数组
C语言中结构体的最后一个元素可以是大小未知的数组
SoftArray中的array仅是一个待使用的标识符,不占用存储空间。
柔性数组的用法
10-2柔性数组使用方法
C语言中的union
C语言中的union在语法上与struct相似
union只分配最大成员的空间,所有成员共享这个空间
union的注意事项
union的使用受系统大小端的影响
小端模式系统 低地址存储低位数据 /大端模式系统 低地址存储高位数据
10-3 编程判断系统的大小端
小结:
struct中的每个数据成员有独立的存储空间
struct可以通过最后的数组标识符产生柔性数组
union中的所有数据成员共享同一存储空间
union的使用会受到系统大小端的影响