2 回答

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
數(shù)組中每個(gè)元素的大小都是一樣的。整個(gè)數(shù)組的占用內(nèi)存的大小就是“單個(gè)元素的大小”乘以“數(shù)組的元素個(gè)數(shù)”。
你這里,數(shù)組的元素是個(gè)union,而union占用內(nèi)存的大小是其中最大成員占用的大小。這樣得到union的大小,因?yàn)閡nion就是數(shù)組元素,那么再乘以元素個(gè)數(shù),就得到整個(gè)數(shù)組占用的大小。
所以不是“數(shù)組里有幾個(gè)元素就把所占內(nèi)存最長(zhǎng)的那個(gè)成員乘以元素?cái)?shù)嗎”,你這樣是把兩個(gè)知識(shí)點(diǎn)混在一起了...

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
D
不同于 struct,union 中的成員共用一塊內(nèi)存?;蛘哒f(shuō) union 中的成員都從同一個(gè)位置開(kāi)始占用內(nèi)存,整個(gè) union 占用的內(nèi)存是其中占用內(nèi)存最多的一個(gè)成員所占用的大小。
這個(gè) union 中 float 成員占用 4 字節(jié),int 成員不會(huì)超過(guò)它,所以整個(gè) union 應(yīng)該是占用 4 字節(jié)。
而 u 是個(gè)有兩個(gè)元素的數(shù)組,所以整個(gè) u 數(shù)組占用 8 字節(jié)。
sizeof 運(yùn)算符得到的是整個(gè) u 數(shù)組所占用內(nèi)存的字節(jié)數(shù)。
- 2 回答
- 0 關(guān)注
- 1930 瀏覽
添加回答
舉報(bào)