问答详情
源自:5-2 指针运算

数组越界问题

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


提问者:海纳川 2015-09-19 13:21

个回答

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

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

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

    编译器没有错。

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

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