精華區beta Programming 關於我們 聯絡資訊
※ 引述《ji3g45j (pig)》之銘言: : ※ 引述《datagram ()》之銘言: : : int main() : : { : : int a=4; : : float uu[a]={0}; : : printf("%f",uu[3]); : : return 0; : : } : : 這個寫法有錯 ,應該是錯在 float uu[a]={0} 這一行 : : 為什麼已經令了 a=4 ,卻不能 把a之值 放入 uu[4]呢? : : 有沒有什麼方法可以解決這種問題? : : 因為我在寫 header檔時, function(X,X,G) : : G是一個int,要丟進此function運作,而此function中設了一個array : : int AA[G]={0}; ==>這會出現錯誤。這種錯誤跟上面也是一樣的錯誤。 : 實際上的編譯結果會讓uu[a]變成uu[4],因為a是常數(如果你編譯器不笨的話) : 但uu[4]所能索引的範圍是uu[0]~uu[3],因此uu[4]是有問題的 : 而你第2個問題必須要用動態記憶體配置,因為你的G是變數 老實講我是不太清楚C是怎麼處理的(因為C裡面比較常用#define) 不過C++就很硬, 沒const就是非常數 有掛const就算mutable都會給你過(run-time會不會死我就不知道了)... - 真的有compiler會自動去判斷a=4 const? =_=a? 總覺得直接吐一個compile-time error比較安全直接... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.163.156.62