作者windincloud (雲淡風輕)
看板C_and_CPP
標題[問題] 宣告陣列大小可以用變數?
時間Fri May 8 10:09:41 2009
看到前幾篇的內容感到狐疑
記得以前學的都是若你沒先#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: 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