試題 柔性陣列

2021-09-25 12:34:53 字數 3063 閱讀 4402

目錄

一、試題:開發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...