阻止数组写入不存在的索引

时间:2015-11-21 10:04:59

标签: c arrays

我有一些数字,如:

int a[10]={1,1,1,1,1,1,1,1,2,1};

我找到2的位置,然后将indexof(2)+4和-4的值也改为2.

问题是indexof(2)+4不存在,这意味着c将覆盖一些不属于数组的内存。如何阻止c写入超出数组长度的索引?

2 个答案:

答案 0 :(得分:3)

在C中,没有内置检查(即没有程序员参与的情况),以确保数组索引保持在范围内。

如果要访问(读取或写入)a[i],那么在执行此操作之前,您需要编写i是有效索引的代码检查,如果不是a[i],则不要访问i 0无效。这意味着确保值介于n-1n之间,其中n已知为数组中元素的数量。

有多种方法可以获取或设置(comment " public class HelloWorld { public static void main(String[] args) { System.out.print("Hello, World"); System.out.println(); } } ") 的值。每个都有适用性限制。

答案 1 :(得分:1)

您可以使用sizeof()运算符来获取数组的大小。使用它,您可以在更改值之前检查值indexof(2)+4是否大于数组大小。