5.2.5 共用体的sizeof
原则上讲,共用体的变量的大小取决于所有的成员中占用空间最大的一个,举例如下。
union Ex { double x; char y; };则sizeof(Ex)等于8,但结构体变量内存分配的准则(3)在此仍旧成立,如下所示。 union Ex1 { char x[13]; float y; };
此时,sizeof(Ex1)等于16,这是因为在Ex1中,最宽基本类型为float,占4个内存字节,根据准则(3),共用体Ex1的变量大小必须是4的整数倍,所以会在后面填充3个字节,输出结果为16。
说明
和结构一样,除了成员变量外,共用体还可以有成员函数,关于这方面的内容将在第8章中进行介绍。