零長度陣列

2021-06-16 04:38:23 字數 799 閱讀 5064

零長度陣列--

神奇的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,分配時計算物...