C語言冷門知識 柔性陣列

2021-10-12 04:52:22 字數 872 閱讀 4557

什麼是柔性陣列?

c99 中,結構中的最後乙個元素允許是未知大小的陣列,這就叫做『柔性陣列』成員。

我對此的理解 為

1.是結構體的最後乙個元素。

2.具有0個元素。

3.無大小

例:

我們知道在c語言的語法中不允許存在大小未知的陣列,但由上柔性陣列是個例外,在結構體中 arr是不會發生報錯。

柔性陣列的特點:

結構中的柔性陣列成員前面必須至少乙個其他成員。

sizeof 返回的這種結構大小不包括柔性陣列的記憶體。

包含柔性陣列成員的結構用malloc ()函式進行記憶體的動態分配,並且分配的記憶體應該大於結構的大小,以適應

柔性陣列的預期大小。

柔性陣列的簡單使用測試

#include

#include

#include

struct student

;int

main()

free

(p);

return0;

}

這樣柔性陣列成員score,相當於獲得了10個整型元素的連續空間。

拓展:

c語言結構體裡的陣列與指標

C語言 柔性陣列

柔性陣列 flexible array 也叫伸縮性陣列,其實就是變長陣列,反映了c語言對精煉 的極致追求。這種 結構產生於對動態結構體的需求。比如我們需要在結構體中存放乙個動態長度的字串,這時候,柔性陣列可以大顯身手了。c99使用不完整型別來實現柔性陣列,標準形式如下 struct mystruct...

C語言柔性陣列

1 柔性陣列 c語言中結構體的最後乙個元素可以是大小未知的陣列 c語言中可以由結構體產生柔性陣列 typedef struct soft array softarray 可以試試,printf d sizeof softarray 列印出它的sizeof 大小 結果是4,也就是說array這個未知長...

C語言建立柔性陣列

typedef struct softarray softarray create soft array int size return ret q ret 為null,訪問ret array為什麼沒有導致程式奔潰呢 這裡沒有訪問ret array 即沒要它的位址 只是要了array的型別。ret為...