共用体的本质,只是同一块内存有几个别名,比如i[0]和c是同一个东西,但变量名称不同。因此,合理的使用方式,是别名占用的尺寸应该一样的。i[4]是数组,占用4char,那么另外的变量也应该占用同样的尺寸才对,像现在这样,c只标识了1char的占用,那么相当于c后面有3char的未知数据,虽然程序员可能知道i[1]、i[2]、i[3]可能是有意义的,但使用共用体的外部代码,却只认为z.c是有意义的,那么他极可能取sizeof(z.c)作为这个共用体的尺寸去操作,那是有风险的。
更不合情理的地方,是这个共用体的两个别名都是char类型数据,那样共用体就没有什么意义了。
[
本帖最后由 TonyDeng 于 2012-9-7 22:30 编辑 ]