零長度陣列--
神奇的int reserve[0]
#include
#include
struct device
;//構題
device
之後;這種宣告方法可以巧妙的實現c語
言裡的陣列擴充套件
int main()
# ./a.out
p_dev->reserve[0] = 100
p_dev->reserve[24] = 0
sizeof(struct device) = 8
a = 100
-------------------------------------------
p_dev
|----------|
|int num |
|int count |
|---------| reserve
是陣列的名字
;reserve | |
由於陣列沒有元素,該陣列在該結構體中分配占用空間
| |
所以sizeof(struct device) = 8
| |
| |
|----------|
**:
零長度陣列
最近在準備分析linux input子系統,發現核心 裡面有很多小技巧。特此記錄下,如有不足之處,敬請指正。在日常的程式設計中,有時候需要在結構體中存放乙個長度動態的字串,比如說,我們要在結構體中存放乙個名字,但是這個名字的長度是未知的。於是,我們就會採用以下兩種方法來解決這個問題。注 以下的 都是...
零長度陣列
適用於c語言變長陣列 在實際的程式設計中,我們經常需要使用變長陣列,但是c語言並不支援變長的陣列。此時,我們可以使用結構體的方法實現c語言變長陣列。struct mydata 在結構中,data是乙個陣列名 但該陣列沒有元素 該陣列的真實位址緊隨結構體mydata之後,而這個位址就是結構體後面資料的...
整理 零長度陣列
零長度陣列 gnu c 允許使用零長度陣列,在定義變長物件的頭結構時,這個特性非常有用。例 如 include linux minix fs.h struct minix dir entry 結構的最後乙個元素定義為零長度陣列,它不佔結構的空間。在標準 c 中則需要 定義陣列長度為 1,分配時計算物...