結構體中的零長度陣列

2021-06-05 22:02:10 字數 485 閱讀 5841

參考:

struct node ;

這種零長度的的陣列是為了方便結構體長度的動態擴充套件。乙個 node 的結構體,它的長度並不包括 array。但是如果使用 malloc() 來分配記憶體,就可以為乙個 node 的指標多分配一些記憶體,然後使用 array 來訪問這些多分配出來的記憶體。例子如下:

#include #include struct ibuffer ;

int main()

printf("[%d] ", buf->length);

for (i=0; ibuf[i]);

printf("\n");

return 0;

}

執行結果如下:

$ ./a.out 

length: 5

[5] 0 1 2 3 4

零長度陣列

零長度陣列 神奇的int reserve 0 include include struct device 構題 device 之後 這種宣告方法可以巧妙的實現c語 言裡的陣列擴充套件 int main a.out p dev reserve 0 100 p dev reserve 24 0 size...

零長度陣列

最近在準備分析linux input子系統,發現核心 裡面有很多小技巧。特此記錄下,如有不足之處,敬請指正。在日常的程式設計中,有時候需要在結構體中存放乙個長度動態的字串,比如說,我們要在結構體中存放乙個名字,但是這個名字的長度是未知的。於是,我們就會採用以下兩種方法來解決這個問題。注 以下的 都是...

零長度陣列

適用於c語言變長陣列 在實際的程式設計中,我們經常需要使用變長陣列,但是c語言並不支援變長的陣列。此時,我們可以使用結構體的方法實現c語言變長陣列。struct mydata 在結構中,data是乙個陣列名 但該陣列沒有元素 該陣列的真實位址緊隨結構體mydata之後,而這個位址就是結構體後面資料的...