[問題] 為什麼超出陣列範圍的變數還有位址呢

看板C_and_CPP (C/C++)作者 (雞飛城市)時間16年前 (2009/05/12 21:52), 編輯推噓6(606)
留言12則, 8人參與, 最新討論串1/1
今天看到一個code int a[3]; int *ptr; 然後下面的for迴圈又有 for(;ptr<&a[3];ptr++) 條件判斷用到了&a[3]我就覺得奇怪 為什麼這樣還能過 置底的十誡也說不要去存取超出陣列範圍的大小 因為效率考量,所以compiler不會去檢查 可是想不透為什麼我宣告a[3],超出陣列範圍的a[3]、a[4]、a[5]、… 這些陣列還會有address呢?? 而不是直接配一個固定大小的a[0]~a[2] thanks!! -- 我就像一隻在天空自由傲翔的老鷹 看盡世間男女分分合合喜怒哀樂恩怨情仇... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.97.37

05/12 21:55, , 1F
呃 就說了不會檢查了阿 所以會看到不屬於你的東西
05/12 21:55, 1F

05/12 21:55, , 2F
你可以去寫他看看 有機會掛掉
05/12 21:55, 2F

05/12 21:57, , 3F
看看會不會改到OS的記憶體XDD
05/12 21:57, 3F

05/12 21:57, , 4F
a[3] 就只是 a[0] 的位置再往後移三個而已
05/12 21:57, 4F

05/12 22:29, , 5F
配置的意思是, 縣政府說中正路一號到五號是你家的
05/12 22:29, 5F

05/12 22:29, , 6F
這不代表中正路沒有七號, 也不代表你不能闖進七號的房子裡
05/12 22:29, 6F

05/12 22:30, , 7F
只是你闖進去亂搞一通, 很有可能會被警察當闖空門抓走
05/12 22:30, 7F

05/12 22:32, , 8F
被抓去關就回不了家
05/12 22:32, 8F

05/12 22:35, , 9F
推5樓到8樓 XD
05/12 22:35, 9F

05/12 22:43, , 10F
推l大的解釋, 真是淺顯易懂:)
05/12 22:43, 10F

05/12 23:00, , 11F
不要dereference就沒事
05/12 23:00, 11F

05/12 23:03, , 12F
ledia的解釋很貼切 XDDD
05/12 23:03, 12F
文章代碼(AID): #1A2Nyqnn (C_and_CPP)
文章代碼(AID): #1A2Nyqnn (C_and_CPP)