看板 C_and_CPP 關於我們 聯絡資訊
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
tjjh89017: union A{05/30 10:56
tjjh89017: int a;05/30 10:57
tjjh89017: char b[0];05/30 10:57
tjjh89017: };05/30 10:57
tjjh89017: 忘記這樣能不能了,應該是有辦法吧(?05/30 10:57
這樣只是union吧, 我記得當初老師是說union會從左邊開始填起,int是4byte,所以char會從左邊占一格, 但是要怎麼讓四格都占滿有點忘記了,印象中好像有搭配到struct........ ※ 編輯: leolin860607 (140.121.196.192), 05/30/2016 11:50:04
uranusjr: 在討論能不能之前, 我想先知道這樣做的意義是什麼...05/30 12:43
bibo9901: 同意樓上. 用union就是代表某些空間不需要用到, 為什麼05/30 12:58
只是想知道了解看看而已
bibo9901: 又想把他拿出來用..WTF?05/30 12:58
chuegou: 同一樓 char b[4]; 這樣就滿了阿05/30 13:03
好像真的是這樣阿阿阿~~~ ※ 編輯: leolin860607 (140.121.213.184), 05/31/2016 01:05:42 ※ 編輯: leolin860607 (140.121.213.184), 05/31/2016 01:10:25
tjjh89017: 那個~你好像不太懂char b[0];的效果欸wwwwwwwww05/31 15:47
我還太淺了TAT
lc85301: 這樣是有個用法,當你要檢視一個int 在記憶體內的排列時05/31 21:30
lc85301: 可以用那個char 去印出內容05/31 21:30
EdisonX: t大的 char b[0]; 類似的變型/應用不少 , 有興趣可找一下05/31 23:17
EdisonX: 關鍵字 : flexible array 05/31 23:17
EdisonX: 這地方用 char b[0] 好處是對 union 做修改時, b 不用改 05/31 23:18
EdisonX: 變大小 , 但在標準上 (C99) 仍待考驗。 05/31 23:18
哦哦哦,長知識了來去好好研究一下這個的應用 ※ 編輯: leolin860607 (140.121.213.184), 06/01/2016 01:37:21