3 回答

TA貢獻1797條經驗 獲得超6個贊
person[0] 和 person[1] 是結構數(shù)組元素,不是共用體成員。
共用體成員指:
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個贊
兩個數(shù)組元素,占用兩塊不同的內存空間
而共用體中的成員,才占用同一塊內存空間
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的低位字節(jié)共用了同一塊內存.
添加回答
舉報