[問題] 有關union

看板C_and_CPP作者 (人生到處知何似)時間8年前 (2016/05/30 10:23), 8年前編輯推噓4(4012)
留言16則, 6人參與, 最新討論串1/1
c語言 如何填滿union剩下的空間 假如union裡面有int 和char 如何在不影響資料的情況下用char填滿?? 這是之前老師隨口問的問題有提到解答 但是我忘記了 記得好像有使用到struct 可以請板上大大指點迷津嗎? union r{ int i; struct{short a;shortb;}x; }; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.121.196.192 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1464575024.A.11F.html

05/30 10:56, , 1F
union A{
05/30 10:56, 1F

05/30 10:57, , 2F
int a;
05/30 10:57, 2F

05/30 10:57, , 3F
char b[0];
05/30 10:57, 3F

05/30 10:57, , 4F
};
05/30 10:57, 4F

05/30 10:57, , 5F
忘記這樣能不能了,應該是有辦法吧(?
05/30 10:57, 5F
這樣只是union吧, 我記得當初老師是說union會從左邊開始填起,int是4byte,所以char會從左邊占一格, 但是要怎麼讓四格都占滿有點忘記了,印象中好像有搭配到struct........ ※ 編輯: leolin860607 (140.121.196.192), 05/30/2016 11:50:04

05/30 12:43, , 6F
在討論能不能之前, 我想先知道這樣做的意義是什麼...
05/30 12:43, 6F

05/30 12:58, , 7F
同意樓上. 用union就是代表某些空間不需要用到, 為什麼
05/30 12:58, 7F
只是想知道了解看看而已

05/30 12:58, , 8F
又想把他拿出來用..WTF?
05/30 12:58, 8F

05/30 13:03, , 9F
同一樓 char b[4]; 這樣就滿了阿
05/30 13:03, 9F
好像真的是這樣阿阿阿~~~ ※ 編輯: leolin860607 (140.121.213.184), 05/31/2016 01:05:42 ※ 編輯: leolin860607 (140.121.213.184), 05/31/2016 01:10:25

05/31 15:47, , 10F
那個~你好像不太懂char b[0];的效果欸wwwwwwwww
05/31 15:47, 10F
我還太淺了TAT

05/31 21:30, , 11F
這樣是有個用法,當你要檢視一個int 在記憶體內的排列時
05/31 21:30, 11F

05/31 21:30, , 12F
可以用那個char 去印出內容
05/31 21:30, 12F

05/31 23:17, , 13F
t大的 char b[0]; 類似的變型/應用不少 , 有興趣可找一下
05/31 23:17, 13F

05/31 23:17, , 14F
關鍵字 : flexible array
05/31 23:17, 14F

05/31 23:18, , 15F
這地方用 char b[0] 好處是對 union 做修改時, b 不用改
05/31 23:18, 15F

05/31 23:18, , 16F
變大小 , 但在標準上 (C99) 仍待考驗。
05/31 23:18, 16F
哦哦哦,長知識了來去好好研究一下這個的應用 ※ 編輯: leolin860607 (140.121.213.184), 06/01/2016 01:37:21
文章代碼(AID): #1NIwGm4V (C_and_CPP)