[爆卦]陣列大小 變數是什麼?優點缺點精華區懶人包

為什麼這篇陣列大小 變數鄉民發文收入到精華區:因為在陣列大小 變數這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者windincloud (雲淡風輕)看板C_and_CPP標題[問題] 宣告陣列大小可以用變數?...



看到前幾篇的內容感到狐疑

記得以前學的都是若你沒先#define a 5;
這樣就不能這樣開陣列 int array[a];

但是今天我使用
#include<stdio.h>
#include<stdlib.h>

int main()
{
int i,j,a;
scanf("%d",&a);
int b[a][a];
for(i=0;i<a;i++)
for(j=0;j<a;j++)
b[i][j]=i+j;
for(i=0;i<a;i++)
printf("%d\t",b[i][i]);
printf("\n");
return 0;
}

這樣卻可以ok?

這是那邊出問題?還是現在支援了?

----
話說我用gcc 3.4.6測的~
參數有下 -ansi
-std=c99
-std=c89
這樣都會過~ 且會執行
執行結果
[~/temp] > ./t
5
0 2 4 6 8


----
請朋友幫忙測
使用visual 2005 卻出現
error C2057: 必須是常數運算式
error C2466: 無法配置常數大小為 0 的陣列,常數必須為大於 0 的整數

--
這是gcc bug???

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.188.117
Fenikso:try -std=c89 -pedantic 05/08 10:32
Fenikso:variable length array在c99是合法的 05/08 10:32
Fenikso:VC2005不過的原因大概是他把你的code當c++ compile.. 05/08 10:37
windincloud:那再問一下 這樣是以後就可以不用動態空間? 只要你能 05/08 10:38
windincloud:事先得到你要的空間大小? 05/08 10:38
littleshan: 見 #14XQNUYz 05/08 10:47
littleshan: VC 會用附檔名判斷使用 C 或 C++ 編譯 05/08 10:48
littleshan:過不了是因為 VC 不支援 C99 05/08 10:48
littleshan:如無必要還是儘量別用 VLA 05/08 10:50
windincloud:感謝 看完那篇就懂了~ 05/08 10:53
VictorTom:推:) 05/08 11:59

你可能也想看看

搜尋相關網站