1樓:Xi Yang
C語言裡面的一種常用寫法,這麼做可以把變長資料和自己的頭放在一起,避免額外的malloc和不連續的資料。那個陣列必須放在最後乙個成員。
好像只有GNU GCC支援這個。
2樓:Tim Shen
struct SomeStruct *a = new struct SomeStruct;
乙個是棧分配/全域性變數,乙個是堆分配啊哥哥,別看著都能convert成指標就都當作一回事了。。
struct SomeStruct a[1];用作全域性變數/棧變數的時候,無非就是圖個方便,原來要寫&a的現在寫a就行了,也不產生額外的空間和時間開銷。
放struct的末尾作為flexible data member我倒是覺得沒必要這麼做,在c99之後直接
struct A ;
就好;否則
struct AHeader ;
就行了,當然可能要額外align一下。獲取元素的時候(char*)(header_ptr + 1)就是了。這比嵌入個char data[1]好在可以支援0個元素。
我並沒有查過這在C裡是不是ub,不過C++裡肯定得封裝一套安全的介面再用。
3樓:
可以這樣:
structB;
intcount=4
;structB*
pB=(structB*
)malloc
(sizeof
(structB)
+(count-1
)*sizeof
(struct
A));
memset(pB
,0,sizeof
(structB)
+(count-1
)*sizeof
(struct
A));
pB->c=
count
;inti;
for(i=
0;i<
pB->c;
i++)
程式設計是什麼,有什麼用?
Random Forest 原始人用木棍,弓箭獵殺動物,逐漸攀登到食物鏈頂端 後來發明各種讀不出名字的農具來犁地,開始了自我生產 再後來發明了各種機械和轉化能量的裝置,完成了第一 二次工業革命。人類善於通過創造工具來改變自己的命運,在圖靈那個時代以前,大多都是有什麼需求就造乙個專用的工具出來,使用工...
日語N1考滿分有什麼用?
Harushi 17年12月裸考的N1滿分,托福18年考的也是100多分。不可能完全沒用,但是用處很有限。在學校的時候,很多專案需要語言成績做參考,如果能進專案,那會對就職有些幫助。語言成績對求職的幫助都是特別間接。沒有公司會用語言考試的分數下結論,面試一下什麼都清楚了。簡歷裡都沒法寫,也不是什麼不...
這是什麼魚,有什麼用?
郝牧城 清道夫魚,入侵物種。說是這種魚食腐,貌似並不是。但是會吞食其他魚的魚卵,破壞性很強。而且生命力很頑強,在太陽下曬一天也死不了。很多人說這魚不能吃,也是錯誤的。不過這魚外骨骼,皮硬的可以磨刀,一斤的魚把肉起出來也就2兩。B站有個UP主 大肥仔來了。開發出很多清道夫吃法,包括水煮 紅燒 粽子 魚...