int array[2]; 在课本上就是告诉我们数组大小是2个,array[0]和array[1]。 可是在视频中,array[3]出现了,不管是编译还是运行居然都没问题。为什么? 到底哪里错了?
那个是老师初期不小心写错了,4-6这一节的视频里面已经红字标出了是笔误了。
编译器没有错。
编译器不会对数组访问越界进行检查,且由于数组与指针的密切关系,这样写也许是程序员有意为之,所以也检查不了。
这就是C语言的特色,也可以说是缺点:它赋予程序员足够的自由,但需要程序员清楚自己在干什么。