看板 C_and_CPP 關於我們 聯絡資訊
今天看到一個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
iamivers0n:呃 就說了不會檢查了阿 所以會看到不屬於你的東西 05/12 21:55
iamivers0n:你可以去寫他看看 有機會掛掉 05/12 21:55
godisme:看看會不會改到OS的記憶體XDD 05/12 21:57
james732:a[3] 就只是 a[0] 的位置再往後移三個而已 05/12 21:57
ledia:配置的意思是, 縣政府說中正路一號到五號是你家的 05/12 22:29
ledia:這不代表中正路沒有七號, 也不代表你不能闖進七號的房子裡 05/12 22:29
ledia:只是你闖進去亂搞一通, 很有可能會被警察當闖空門抓走 05/12 22:30
stonehomelaa:被抓去關就回不了家 05/12 22:32
IamCoolKing:推5樓到8樓 XD 05/12 22:35
VictorTom:推l大的解釋, 真是淺顯易懂:) 05/12 22:43
legnaleurc:不要dereference就沒事 05/12 23:00
james732:ledia的解釋很貼切 XDDD 05/12 23:03