看板 Soft_Job 關於我們 聯絡資訊
小弟以為宣告陣列一定要事先知道大小 如果要用動態的大小 必須配合指標 如 int* A; int n; scanf("%d",&n); A = malloc(n*sizeof(int)); 但發現以下程式碼仍可以編譯跟執行 想請問一下是小弟哪邊觀念有錯@@ int main() { int n; int i; int A[n]; scanf("%d",&n); for(i=0;i<n;i++) A[i]=i; for(i=0;i<n;i++) printf("%d\n",A[i]); } 小弟用dev C++ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.131.6.130
Ting1024:哪個編譯器阿.. :D 04/22 12:36
※ 編輯: idforask 來自: 220.131.6.130 (04/22 12:38)
yauhh:觀念沒錯啊,是程式有問題而已 04/22 12:42
diabloevagto:指標只是指向address,這在標準上沒錯,重點就是可 04/22 12:45
diabloevagto:能會有出錯,你如果把警告開最高就會跳出警告了 04/22 12:46
diabloevagto:這程式碼的問題就是,有可能a指向的address是其他人 04/22 12:47
diabloevagto:正在用的,你如果更改可能錯誤 04/22 12:47
diabloevagto:但你如果有先malloc就告訴其他人這是你要用的 04/22 12:47
diabloevagto:別人都不能用 04/22 12:48
linjrming:dev會過 vc不會過 跟編譯器有關 04/22 13:01
diabloevagto:那是因為dev內建的compiler太舊,要自己換新 04/22 14:05
diabloevagto:dev都不更新了,但還是很多人在用,不可思議... 04/22 14:06
Non:有c/c++版 原po也可以轉到那邊去喔^_^ 04/22 14:08
Ting1024:還好啦,看編譯器實作而定。 04/22 14:09
final01:你的觀念還停留在10年前 就醬 04/22 14:22
bleed1979:1. dev有更新 2. 請原po搜尋關鍵字 VLAs C99 C++11 04/22 14:54
diabloevagto:樓上指的是wxDev-C++??那不是不同作者嗎 04/22 14:56
bleed1979:extension怎麼定義? 歷史課本是從夏商周開始的。 04/22 15:04
zkw:宣告 int a[n]時 n是什麼值?? 04/22 15:48
lovdkkkk:這是我好一陣子愛用舊版 Dev 的原因之一... 04/22 16:33
yudsx:去年開始有人更新Dev-C++了 目前最新版本是5.2 04/22 22:06
jacky1029:n有沒有可能是負值呢? 04/26 00:24