C 防止数组写入不存在的索引

C 防止数组写入不存在的索引,c,arrays,C,Arrays,我有一系列数字,如: int a[10]={1,1,1,1,1,1,1,1,2,1}; 我找到2的位置,然后将(2)+4和-4的索引值也更改为2 问题是indexof(2)+4不存在,这意味着c将覆盖一些不属于数组的内存。如何阻止c写入超过数组长度的索引?可以使用sizeof()运算符获取数组的大小。使用它,您可以在更改值之前检查indexof(2)+4的值是否大于数组大小。您可以使用sizeof()运算符获取数组大小。使用它,您可以在更改值之前检查indexof(2)+4的值是否大于数组大小

我有一系列数字,如:

int a[10]={1,1,1,1,1,1,1,1,2,1};
我找到2的位置,然后将(2)+4和-4的索引值也更改为2


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

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

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

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

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


有多种选项可用于获取或设置
n
的值。每种方法的适用性都有限制。

在C中,没有内置的检查(即在没有程序员参与的情况下进行检查)来确保数组索引保持在一定范围内

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


有多种选项可用于获取或设置
n
的值。每个数组的适用性都有限制。

检查结果是否>=10。因为这是C,数组元素应该用
{}
分隔。或者
[]
也有效吗?您不有效-作为程序员,您需要自己检查您访问的任何索引是否有效。你可以考虑使用一个图书馆。例如,在C++中,可以使用<代码> STD::vector < /Cord>并在方法中调用<代码>。@ ARC66:好捕获。非常确定
[]
无效。至少在我的编译器上失败了。我会编辑它。检查结果是否>=10。因为这是C,数组元素应该用
{}
分隔。或者
[]
也有效吗?您不有效-作为程序员,您需要自己检查您访问的任何索引是否有效。你可以考虑使用一个图书馆。例如,在C++中,可以使用<代码> STD::vector < /Cord>并在方法中调用<代码>。@ ARC66:好捕获。非常确定
[]
无效。至少在我的编译器上失败了。我会编辑它。不要依赖于
sizeof
——数组在许多情况下会衰减为指针,特别是通过函数调用。然后,
sizeof
是无用的。奥利弗,这是真的,但是如果数组没有“衰减”到指针,
sizeof
是评估其大小的确定方法。不要依赖于
sizeof
-数组在许多情况下衰减到指针,特别是通过函数调用。然后,
sizeof
是无用的。奥利弗,这是真的,但是如果数组没有“衰减”到指针,
sizeof
是评估其大小的确定方法。