第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

共用體的定義不是說只能存在一種嗎,同一個空間不可能同時存在兩個數(shù)據(jù)吧?

共用體的定義不是說只能存在一種嗎,同一個空間不可能同時存在兩個數(shù)據(jù)吧?

開滿天機 2022-05-12 13:11:13
#include <iostream>#include <string>#include <iomanip>using namespace std;struct S{int num;string name;char sex;char job;union{int grade;char position[10];}category;}person[2];int main(){ int i;for(i=0;i<2;i++){cin>>person[i].num>>person[i].name>>person[i].sex>>person[i].job;if(person[i].job=='s') cin>>person[i].category.grade;else if (person[i].job=='t') cin>>person[i].category.position;else cout<<"input error!";}cout<<endl<<"No. Name sex job grade/position"<<endl;for(i=0;i<2;i++){if (person[i].job=='s')cout<<person[i].num<<setw(6)<<person[i].name<<" "<<person[i].sex<<" "<<person[i].job<<setw(10)<<person[i].category.grade<<endl;elsecout<<person[i].num<<setw(6)<<person[i].name<<" "<<person[i].sex<<" "<<person[i].job<<setw(10)<<person[i].category.position<<endl;}return 0;}我開追蹤檢測的時候,發(fā)現(xiàn)共用體的實際情況跟定義的都不一樣的,你看看那個圖片——是追蹤的過程的值,我們可以發(fā)現(xiàn)person[0].category.grade跟person[1].category.position都存在,但共用體的定義不是說只能存在一種嗎,同一個空間不可能同時存在兩個數(shù)據(jù)吧,,這里搞不明啊,請高手指點下??!
查看完整描述

3 回答

?
FFIVE

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]的東西 不 共享。

查看完整回答
反對 回復 2022-05-16
?
弒天下

TA貢獻1818條經驗 獲得超8個贊

兩個數(shù)組元素,占用兩塊不同的內存空間
而共用體中的成員,才占用同一塊內存空間
category的成員grade和position才是共用體的兩個成員,占用同一塊內存,意味著任何成員的值取決于 成員的類型和最后一次對這塊內存作的操作。
最后一次操作來確定這段二進制最終是什么值
成員的類型用來讓編譯器解釋二進制的值
有點繞口,希望可以幫到你。

查看完整回答
反對 回復 2022-05-16
?
至尊寶的傳說

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é)共用了同一塊內存.

查看完整回答
反對 回復 2022-05-16
  • 3 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號