数组越界问题

来源:5-2 指针运算

海纳川

2015-09-19 13:21

int array[2]; 在课本上就是告诉我们数组大小是2个,array[0]和array[1]。
可是在视频中,array[3]出现了,不管是编译还是运行居然都没问题。为什么?
到底哪里错了?


写回答 关注

2回答

  • 后会无期_
    2017-06-03 16:30:00

    那个是老师初期不小心写错了,4-6这一节的视频里面已经红字标出了是笔误了。

  • onemoo
    2015-09-19 13:25:56

    编译器没有错。

    编译器不会对数组访问越界进行检查,且由于数组与指针的密切关系,这样写也许是程序员有意为之,所以也检查不了。

    这就是C语言的特色,也可以说是缺点:它赋予程序员足够的自由,但需要程序员清楚自己在干什么。

    海纳川

    谢谢,确实如此。自己查了一下,是gcc统计器不会对数组越界进行检查。但其他语言可能就会编译出错。

    2015-09-19 14:32:07

    共 1 条回复 >

Linux C语言指针与内存

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

116475 学习 · 250 问题

查看课程

相似问题