C語言變長陣列講解

2021-10-23 02:43:15 字數 487 閱讀 6390

1、什麼是變長陣列?

變長陣列既陣列大小待定的陣列, c語言中結構體的最後乙個元素可以是大小未知的陣列,也就是所謂的0長度,所以我們可以用結構體來建立變長陣列。

2、變長陣列有什麼用途 ?

它的主要用途是為了滿足需要變長度的結構體,為了解決使用陣列時記憶體的冗餘和陣列的越界問題。

3、用法 :在乙個結構體的最後 ,申明乙個長度為空的陣列,就可以使得這個結構體是可變長的。對於編譯器來說,此時長度為0的陣列並不占用空間,因為陣列名

可以進行動態分配,對於編譯器而言,陣列名僅僅是乙個符號,它不會占用任何空間,它在結構體中,只是代表了乙個偏移量,代表乙個不可修改的位址常量!

對於變長陣列的這個特點,很容易構造出變成結構體,如緩衝區,資料報等等

這樣的變長陣列常用於網路通訊中構造不定長資料報,不會浪費空間浪費網路流量,比如我要傳送1024位元組的資料,如果用定長包,假設定長包的長度為2048,就

會浪費1024個位元組的空間,也會造成不必要的流量浪費。

c99變長陣列 c語言程式設計之可變長陣列

是不是看著標題進來了,認為自己看錯了?因為平常我們c程式設計的時候資料長度都是固定好的,沒有聽說過c還能實現變長陣列?不過你沒看錯,c99中確實是有柔性陣列的概念,也就是可變長陣列,c99中允許結構體中的最後乙個成員是長度未知的陣列,其定義格式如下 typedef struct int a char...

C語言變長陣列使用詳解

看如下 include typedef struct softarray int main 執行結果 root vm 0 7 www.cppcns.comcentos mydoc a.out the struct s size is 4 我們可以看出,softarrwww.cppcns.comay結...

C 變長陣列

變長陣列在c99及c11的標準中支援,嚴格講在c 的所有標準中都不支援變長陣列,只是各家編譯器對語言的擴充套件 includeint foo int n int main 嚴格按照c99標準編譯 clang t.c o t std c99 pedantic,輸出正常 嚴格按照c11標準編譯 clan...