索引超出了数组界限如何解决?
索引超出数组界限,一个是判断一下循环语句中的循环上限是否出错,再一个就是直接更改数组大小。
“索引超出了数组界限"并不是说索引有多长,而是说这个索引在数组的界限当中找不到,可以适当增大数组的大小,使得下面用到的索引能够处在数组的界限中。当然数组不是越大越好,盲目增大数组大小势必会加大内存的开销,响应速度会变慢。
还有一种方法就是使用变量来动态控制数组大小,事先定义一个变量,通过用户的输入来决定这个数组到底有多大,这样避免了内存空间的浪费或者索引超出数组界限的情况出现。另外,由用户来决定数组大小也是要事先设定好上限的,否则用户恶意开销数组空间必然会导致死机。
通常就是定义一个常量,这样将来的程序的可读性好、并且可移植性也好,以 C 语言为例,可以如下定义:#define MAX 30 /* 定义一个元素个数为 30 的常量,将来如果元素个数需要增减、或者减少,都可以根据具体需要修改这一处,而程序中其他所有涉及到的 MAX 都自动修改成新的数值,程序的可移植性好。
索引超出了数组界限是怎么回事?
1.知识点介绍
索引超出了数组界限就是数组下标越界。数组下标越界是一个程序初学者昀容易犯的错误之一。
在 C
中,数组的下标默认是从 0开始的。假如数组共有 5个元素,则下标范围为 0~ 4,当下标为 5时就会产生错误,即索引超出了数组界限。 2.示例
打开 Visual Studio 2010开发环境,新建一个控制台应用程序,并将其命名为 BeyondMark。
在以下代码中,当 i=5时就会出现“索引超出了数组界限”的错误,如图 5.2所示。可以通过 IndexOutOfRangeException捕获异常,代码如下:
在获取异常后,如果出现索引超出了数组的界限,将给出如图 5.3所示的错误提示。
图 5.2 索引超出了数组界限
图 5.3 捕获异常数组下标越界异常
专家点评
数组是相同类型的对象的集合。在数组中的每项都按索引进行访问,索引是一个数字,指示对象在数组中的存储位置。数组中第一个元素的索引为 0,比所在位置小 1。数组中对象的索引总是比数组的长度小 1。
问题 :在数组中如何查找一个数的近似值?
问题阐述
在 C
中,用什么方法可以实现在数组中查找一个数的近似值? 专家解答
1.知识点介绍
可以使用二分查找方法在数组中查找一个数的近似数。
二分法查找的基本思路是:首先将结点按关键字排序,其次将待查找值与中间位置的值进行比较,如果相等则查找成功,否则说明中间数据值不是大于就是小于待查找值,然后继续进行这样的二分查找,直到查找结束。下面的示例将演示如何用二分查找方法在一个数组中查找已知数字的近似值。 2.示例
(1)打开 Visual Studio 2010开发环境,新建一个 Windows窗体应用程序,并将其命名为 LookupNear。
(2)更改默认窗体 Form1的 Name属性为 Frm_Main,在该窗体中添加一个 ListBox控件,用来显示数组元素;添加一个 TextBox控件,用来输入要查找的近似值;添加一个 Button控件,用来执行查找操作。
(3)程序主要代码如下:
程序的运行结果如图 5.4所示。
图 5.4 在数组中查找近似值专家点评
二分查找又称折半查找,它是一种效率较高的查找方法。