變長結構體

typedef struct tagTest
{
int uID;
int iNum;
int offset
int data[1]; //可變長數據,根據所需要數據類型定義
}Test;
data是一個數據,個數爲1,但是其實在使用的時候,不一定爲1,也就是說在上述結構不能
直接Test tmp;這樣聲明,必要聲明成指針,然後在malloc的時候,根據iNum數目進行申請,
譬如iNum爲5個int,這可以這樣
p = (Test *)malloc(sizeof(Test) + (iNum - 1) * sizeof(int));
這樣,後面的內容可以通過p->data[i]訪問了,p->data[0]就是我們當初定義的int data[1];其後的

p->data[1],p->data[2],p->data[3],p->data[4]就是(iNum - 1)新分配出來空間。
發佈了2 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章