3 回答
TA贡献1797条经验 获得超6个赞
person[0] 和 person[1] 是结构数组元素,不是共用体成员。
共用体成员指:
int grade;
char position[10];
grade 和 position 共享。
--------------------------------------------------
person[0]的grade 和 person[0]的 position 共享。
person[1]的grade 和 person[1]的 position 共享。
person[0]的东西 和 person[1]的东西 不 共享。
TA贡献1818条经验 获得超8个赞
两个数组元素,占用两块不同的内存空间
而共用体中的成员,才占用同一块内存空间
category的成员grade和position才是共用体的两个成员,占用同一块内存,意味着任何成员的值取决于 成员的类型和最后一次对这块内存作的操作。
最后一次操作来确定这段二进制最终是什么值
成员的类型用来让编译器解释二进制的值
有点绕口,希望可以帮到你。
TA贡献1789条经验 获得超10个赞
共用体的实质是所有成员共用同一段内存.所以对其中某个成员的值进行修改的话,其他成员的值也就相应有了变化.
比如之前你在某个地方将person[0].category.position[0]的值设为了'a',而后来又在某个地方写了person[0].category.grade=49.这时候如果你printf("%c",person[0].category.position[0]);的话,就会显示'1',这就是因为person[0].category.position[0]和person[0].category.grade的低位字节共用了同一块内存.
添加回答
举报