int a[ 10 ] ; 访问a[ 10 ]的话就会出现越界的错误 今天想了一下 下标访问数组可以看作指针访问的形式 也就是取( & a[ 0 ] + 10 * sizeof ( int ) ) 这个地址里的内容 然后我就想 反正数组是连续存储的 用了后面那四个字节的内存又怎么样呢 应该不会是无意义的内存吧 那为什么会出现Bug或者程序中断呢 求解
8条回答
- 朕就是这么帅 2016-09-08 10:37关注
数组占用了一段连续的内存空间。然后,我们可以通过指定数组下标来访问这块内存里的不同位置。因此,当你的下标过大时,访问到的内存,就不再是这个数组“份内”的内存。你访问的,将是其它变量的内存了,它的值是不确定的,不可控的,它会使按照数组读取方法调用的这块内存的其他类不能正确解析到需要的值本来你就想要个10 来了个2^32-1 你让别人怎么玩?
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报