[請益] array問題

看板Soft_Job作者 (something is wrong者水)時間14年前 (2012/04/22 12:31), 編輯推噓7(7014)
留言21則, 11人參與, 最新討論串1/1
小弟以為宣告陣列一定要事先知道大小 如果要用動態的大小 必須配合指標 如 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

04/22 12:36, , 1F
哪個編譯器阿.. :D
04/22 12:36, 1F
※ 編輯: idforask 來自: 220.131.6.130 (04/22 12:38)

04/22 12:42, , 2F
觀念沒錯啊,是程式有問題而已
04/22 12:42, 2F

04/22 12:45, , 3F
指標只是指向address,這在標準上沒錯,重點就是可
04/22 12:45, 3F

04/22 12:46, , 4F
能會有出錯,你如果把警告開最高就會跳出警告了
04/22 12:46, 4F

04/22 12:47, , 5F
這程式碼的問題就是,有可能a指向的address是其他人
04/22 12:47, 5F

04/22 12:47, , 6F
正在用的,你如果更改可能錯誤
04/22 12:47, 6F

04/22 12:47, , 7F
但你如果有先malloc就告訴其他人這是你要用的
04/22 12:47, 7F

04/22 12:48, , 8F
別人都不能用
04/22 12:48, 8F

04/22 13:01, , 9F
dev會過 vc不會過 跟編譯器有關
04/22 13:01, 9F

04/22 14:05, , 10F
那是因為dev內建的compiler太舊,要自己換新
04/22 14:05, 10F

04/22 14:06, , 11F
dev都不更新了,但還是很多人在用,不可思議...
04/22 14:06, 11F

04/22 14:08, , 12F
有c/c++版 原po也可以轉到那邊去喔^_^
04/22 14:08, 12F

04/22 14:09, , 13F
還好啦,看編譯器實作而定。
04/22 14:09, 13F

04/22 14:22, , 14F
你的觀念還停留在10年前 就醬
04/22 14:22, 14F

04/22 14:54, , 15F
1. dev有更新 2. 請原po搜尋關鍵字 VLAs C99 C++11
04/22 14:54, 15F

04/22 14:56, , 16F
樓上指的是wxDev-C++??那不是不同作者嗎
04/22 14:56, 16F

04/22 15:04, , 17F
extension怎麼定義? 歷史課本是從夏商周開始的。
04/22 15:04, 17F

04/22 15:48, , 18F
宣告 int a[n]時 n是什麼值??
04/22 15:48, 18F

04/22 16:33, , 19F
這是我好一陣子愛用舊版 Dev 的原因之一...
04/22 16:33, 19F

04/22 22:06, , 20F
去年開始有人更新Dev-C++了 目前最新版本是5.2
04/22 22:06, 20F

04/26 00:24, , 21F
n有沒有可能是負值呢?
04/26 00:24, 21F
文章代碼(AID): #1Fauckj3 (Soft_Job)