课程
/后端开发
/C
/Linux C语言指针与内存
int array[2]
array[3]=100;//申请数组应该是两个值,为什么在这不给报错?
2015-10-24
源自:Linux C语言指针与内存 5-2
正在回答
编译器不会对数组访问越界进行检查。
因为数组和指针是有密切联系的,很多时候编译器无法确定你访问的位置是否在合理的范围内,所以编译器就干脆对此不检查了。 实践中,有经验的程序员经常活用这种数组和指针的关系。
当然,你这两行代码确实是错的,对array[3]的访问确实越界了。虽然能编译通过,但运行时可能会发生错误。
香浓一笔 提问者
举报
指针-C语言的核心,代领大家对c语言有更加深刻的理解
1 回答数组的逆序排列,为什么不对啊
1 回答为什么会输出数组的值啊
2 回答数组长度与数组赋值的问题
2 回答为什么地址一样数值不一样?
1 回答都说数组是指针常量 为什么p str 的时候输出内容 ,不输出地址