怎么解决数组越界的问题?

 我来答
惠企百科
2022-12-11 · 百度认证:北京惠企网络技术有限公司官方账号
惠企百科
惠企百科网是一家科普类综合网站,关注热门中文知识,集聚互联网精华中文知识,本着自由开放、分享价值的基本原则,向广大网友提供专业的中文知识平台。
向TA提问
展开全部
1、什么是数组访问越界?\x0d\x0a我们通过数组的下标来得到数组内指定索引的元素。这称作对数组的访问。\x0d\x0a如果一个数组定义为有n个元素,那么,对这n个元素(下标为0 到 \x0d\x0an-1的元素)的访问都合法,如果对这n个元素之外的访问,就是非法的,称为“越界。\x0d\x0a数组占用了一段连续的内存空间。然后,我们可以通过指定数组下标来访问这块内存里的不同位置。因此,当你的下标过大时,访问到的内存,就不再是这个数组“份内”的内存。你访问的,将是其它变量的内存了。\x0d\x0a2、访问越界会出现什么结果?\x0d\x0a首先,它并不会造成编译错误!就是说,C,C++的编译器并不判断和指出你的代码“访问越界”了。一个明明是错误的东西,就这样“顺利”地通过了编译。数组访问越界在运行时,它的表现是不定的,有时似乎什么事也没有,程序一直运行(当然,某些错误结果已造成);有时,则是程序一下子崩溃。因此在使用数组时,一定要在编程中判断是否越界以保证程序的正确性。\x0d\x0a常见的错误就是数组的size值和下标访问值弄错,数组的下表是从0开始的,最大的访问值是size-1。\x0d\x0a3、解决办法\x0d\x0a由于数组的元素个数默认情况下是不作为实参内容传入调用函数的,因此会带来数组访问越界的相关问题,解决问题方法,可以用传递数组元素个数的方法即:用两个实参,一个是数组名,一个是数组的长度。\x0d\x0a举例:\x0d\x0a\x0d\x0a#include\x0d\x0a\x0d\x0avoid PutArray(int *p, int length)\x0d\x0a\x0d\x0a{\x0d\x0a\x0d\x0a // 在此判断入口参数p和length的有效性\x0d\x0a\x0d\x0a ??\x0d\x0a\x0d\x0a for(int \x0d\x0ai=0;i
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式