为什么数组不报错

来源:5-2 指针运算

香浓一笔

2015-10-24 18:37

int array[2]

array[3]=100;//申请数组应该是两个值,为什么在这不给报错?

写回答 关注

1回答

  • onemoo
    2015-10-24 23:44:57
    已采纳

    编译器不会对数组访问越界进行检查。

    因为数组和指针是有密切联系的,很多时候编译器无法确定你访问的位置是否在合理的范围内,所以编译器就干脆对此不检查了。  实践中,有经验的程序员经常活用这种数组和指针的关系。


    当然,你这两行代码确实是错的,对array[3]的访问确实越界了。虽然能编译通过,但运行时可能会发生错误。

    香浓一笔

    非常感谢!

    2015-10-25 15:17:27

    共 1 条回复 >

Linux C语言指针与内存

指针-C语言的核心,代领大家对c语言有更加深刻的理解

116478 学习 · 250 问题

查看课程

相似问题