C 變長陣列

2021-08-28 12:46:19 字數 934 閱讀 8292

變長陣列在c99及c11的標準中支援,嚴格講在c++的所有標準中都不支援變長陣列,只是各家編譯器對語言的擴充套件

#includeint foo(int n)

int main()

嚴格按照c99標準編譯: clang t.c -o t -std=c99 -pedantic,輸出正常

嚴格按照c11標準編譯: clang t.c -o t -std=c11 -pedantic,輸出正常

嚴格按照c89標準編譯: clang t.c -o t -std=c99 -pedantic,提示如下的警告資訊:

t.c:4:7: warning: variable length arrays are a c99 feature [-wvla-extension]

int x[n];

^1 warning generated.

pp

#includeint foo(int n)

int main()

嚴格按照c++98標準:clang t.cpp -o t -std=c++98 -pedantic,提示警告資訊如下:

t.cpp:4:7: warning: variable length arrays are a c99 feature [-wvla-extension]

int x[n];

^1 warning generated.

嚴格按照c++11標準:clang t.cpp -o t -std=c++11 -pedantic,提示警告資訊如下:

t.cpp:4:7: warning: variable length arrays are a c99 feature [-wvla-extension]

int x[n];

^1 warning generated.

C 變長陣列,不定長陣列

在c 程式設計中,經常的遇到一種情況 需要定義乙個陣列,但陣列的長度不定,因為這個長度是根據某些其他條件確定的,這時就需要定義乙個變長的陣列。這時可以按如下樣式進行定義,以先是定義乙個不定長結構體陣列 結構體為 struct myarry int arr count get need count a...

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

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

C語言變長陣列講解

1 什麼是變長陣列?變長陣列既陣列大小待定的陣列,c語言中結構體的最後乙個元素可以是大小未知的陣列,也就是所謂的0長度,所以我們可以用結構體來建立變長陣列。2 變長陣列有什麼用途 它的主要用途是為了滿足需要變長度的結構體,為了解決使用陣列時記憶體的冗餘和陣列的越界問題。3 用法 在乙個結構體的最後 ...