gpt4 book ai didi

c++ - 在 O(n) 搜索中使用 i+1 是否安全?

转载 作者:行者123 更新时间:2023-11-28 07:43:01 25 4
gpt4 key购买 nike

我在问自己使用 i+1 检查下一个数字是否与当前数字相同是否安全...示例:

int search(int el, int* a, int n) {

if(a == NULL && n<0)
{
return NULL;
}

for(int i=0; i<n; i++)
{
if((a[i] == el )&& (a[i+1] != el)) // here I check next element
{
return i; // if I find it, return a position.
}
}

return -1; // else return -1
}

如果我们有一个长度为 4 的数组,那么 a[i+1] 将被传递一个数组长度,但程序仍然可以运行。

最佳答案

不,越界访问元素是未定义的行为

您的程序可能“看起来”可以工作,但您不能期望从中得到任何结果。它可以在您的机器上运行,并在另一台机器上崩溃。或者它现在可以在所有机器上运行,但明天不行。在使用下标运算符之前,您应该检查索引是否越界。

你可以考虑改变你的循环,让它永远不会访问越界元素:

for (int i = 0; i < n - 1; i++)
// ^^^^^

然后,作为一种特殊情况,您必须单独处理数组中的最后一个元素。

关于c++ - 在 O(n) 搜索中使用 i+1 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15461937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com