目錄
一、試題:開發c**時,經常見到如下型別的結構體定義:
二、請分析下面的程式,看一看如何使用柔性陣列。
三、結構體中使用指標實現柔性陣列功能
《橫掃offer:程式設計師招聘真題詳解700題》著者:開點工作室編著 p51
typedef struct list_t list_t;
最後一行char data[0];的作用是( )。
a.方便管理記憶體緩衝區。 b.減少記憶體碎片化。 c.標識結構體結束。 d.沒有作用。
答案:b。
在c語言中,將結構體型別中的最後乙個成員定義為陣列且大小定義為0的用法,可以巧妙的實現陣列擴充套件。
柔性陣列成員不僅可以是字元陣列,還可以是其它型別的陣列或指標。
#include#include#include#define num 3
typedef struct list_t list_t;
int main(void)
; list_t* head, * p;
int i;
printf("sizeof(list_t)=%d\n",sizeof(list_t));
head = (list_t*)malloc(sizeof(list_t));
head->next = null;
head->prev = null;
for (i = 0; i < num; i++)//反向建立單鏈表
i = 1;
p = head->next;
while (p!=null)//輸出鍊錶中的節點
for (i = 0; i < num; i++)//反向建立單鏈表
i = 1;
p = head->next;
while (p!=null)//輸出鍊錶中的節點
while (head!=null)
return 0;
}//結果
sizeof(list_t)=12
p=00f950d0,p->data=00f95108,size *p=12,size data=4
p->data=this is a string.
p=00f94f88,p->data=00f94fc0,size *p=12,size data=4
p->data=abc
p=00f9c580,p->data=00f9c5b8,size *p=12,size data=4
p->data=123456789
list:1,00f9c580, 9,123456789
list:2,00f94f88, 3,abc
list:3,00f950d0,17,this is a string.
.//結果
柔性陣列(flexible array)
相信好多人都沒聽過這個概念 柔性陣列 flexible array 到底什麼是柔性陣列呢?柔性陣列的定義 結構中最後乙個元素允許是未知大小的陣列,這就是柔性陣列。柔性陣列的使用舉例 include include include typedef struct c c intmain void pri...
c柔性陣列
一 定義 c99及以上標準支援 標準示例如下 typedef struct st type type a 初始大小為sizeof i 0個元素的陣列沒有占用空間,而後我們可以進行變長操作了。通過如下表示式給結構體分配記憶體 type a p type a malloc sizeof type a 1...
C語言 柔性陣列
柔性陣列 flexible array 也叫伸縮性陣列,其實就是變長陣列,反映了c語言對精煉 的極致追求。這種 結構產生於對動態結構體的需求。比如我們需要在結構體中存放乙個動態長度的字串,這時候,柔性陣列可以大顯身手了。c99使用不完整型別來實現柔性陣列,標準形式如下 struct mystruct...