共用體的最后一次賦值問題
union st { int a[2]; int b[2]; int c; }; int main( ) { union st y; y.a[0]=10;y.b[1]=20; y.c=30;printf("%d,%d",y.a[0],y.a[1]); return 0; }為什么是30,20而不是30,30不是起作用的值是最后一次被賦值的成員的值嗎
你對(duì)共用體的理解有問題,在你的共有體中,,c與a,b共用內(nèi)存,,它的內(nèi)存結(jié)構(gòu)是這樣的
很明顯,你修改了c,它只會(huì)影響到a[0],b[0],對(duì)a[1],b[1]是沒有影響的
y.c=30,那么y.a[0]=y.b[0]=30
y.a[1]當(dāng)然不變,,它仍是原來的20
Tags:賦值
相關(guān)推薦
便查問答是一款實(shí)用的網(wǎng)絡(luò)熱門知識(shí)問答平臺(tái),,專注于分享你不知道的知識(shí),、經(jīng)驗(yàn)及生活問題,在這里所有人都能找到答案歡迎網(wǎng)友參與討論,。