作者OpenSkyWin (鸡飞城市)
看板C_and_CPP
标题[问题] 为什麽超出阵列范围的变数还有位址呢
时间Tue May 12 21:52:43 2009
今天看到一个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
1F:→ iamivers0n:呃 就说了不会检查了阿 所以会看到不属於你的东西 05/12 21:55
2F:→ iamivers0n:你可以去写他看看 有机会挂掉 05/12 21:55
3F:推 godisme:看看会不会改到OS的记忆体XDD 05/12 21:57
4F:→ james732:a[3] 就只是 a[0] 的位置再往後移三个而已 05/12 21:57
5F:推 ledia:配置的意思是, 县政府说中正路一号到五号是你家的 05/12 22:29
6F:→ ledia:这不代表中正路没有七号, 也不代表你不能闯进七号的房子里 05/12 22:29
7F:→ ledia:只是你闯进去乱搞一通, 很有可能会被警察当闯空门抓走 05/12 22:30
8F:推 stonehomelaa:被抓去关就回不了家 05/12 22:32
9F:推 IamCoolKing:推5楼到8楼 XD 05/12 22:35
10F:推 VictorTom:推l大的解释, 真是浅显易懂:) 05/12 22:43
11F:推 legnaleurc:不要dereference就没事 05/12 23:00
12F:→ james732:ledia的解释很贴切 XDDD 05/12 23:03