为了账号安全,请及时绑定邮箱和手机立即绑定

数组越界问题

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


正在回答

2 回答

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

0 回复 有任何疑惑可以回复我~

编译器没有错。

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

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

0 回复 有任何疑惑可以回复我~
#1

海纳川 提问者

谢谢,确实如此。自己查了一下,是gcc统计器不会对数组越界进行检查。但其他语言可能就会编译出错。
2015-09-19 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Linux C语言指针与内存
  • 参与学习       116475    人
  • 解答问题       250    个

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

进入课程

数组越界问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信