struct SomeStruct a 1 是什麼用法?

時間 2021-05-11 22:21:06

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主 大肥仔來了。開發出很多清道夫吃法,包括水煮 紅燒 粽子 魚...