[問題] 陣列長度無法判讀(vc2010)

看板C_and_CPP (C/C++)作者 (Kent)時間12年前 (2013/11/13 23:13), 編輯推噓3(305)
留言8則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) vs 2010 C++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 陣列長度無法判讀 餵入的資料(Input): int x = 4,y= 3; 預期的正確結果(Expected Output): 編輯正確 錯誤結果(Wrong Output): 運算式須有常數值 程式碼(Code):(請善用置底文網頁, 記得排版) int x = 4,y= 3; double C[x*y]; 補充說明(Supplement): 有在codeblock下跑過,可以跑。但用vs2010時卻一直出現"運算式須有常數值", 小弟第一次發文,這問題可能很簡單,但一直想不通為什麼,望高手能解惑。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.251.115.41

11/13 23:14, , 1F
因為你這種宣告方法在 compile time 就要決定分配多大空間
11/13 23:14, 1F

11/13 23:15, , 2F
如果run time才知道該開多大,要改用new或malloc動態配置
11/13 23:15, 2F

11/13 23:20, , 3F
C:B 可以跑應該是 gnu extension 或 C99 的關係
11/13 23:20, 3F

11/13 23:28, , 4F
感謝e大跟L大的解說,大致上了解了。
11/13 23:28, 4F

11/13 23:43, , 5F
置底文沒看齁XD
11/13 23:43, 5F

11/14 12:52, , 6F
改成const int x = 4,y= 3;編譯就會過了
11/14 12:52, 6F

11/18 14:43, , 7F
double*C=(double*)malloc(x*y*sizeof(double));
11/18 14:43, 7F

11/18 14:44, , 8F
最後要加free(C);C=NULL;
11/18 14:44, 8F
文章代碼(AID): #1IWvSWGt (C_and_CPP)
文章代碼(AID): #1IWvSWGt (C_and_CPP)