bool found;
:
return found;
布尔值通常限制为真/假,通常表示为 1/0。将非零值放入 a 很有可能将其bool
强制转换为1
.
如果您想返回找到它的索引,您可能应该使用int
:
int found;
但是,即使您进行了更改,它也不起作用:
int linsearch(T arr[],int size,T target)
{
int begin;
int loc;
int found; // <<-- changed this
for(begin=0;begin<size&&target!=arr[begin];begin++);
loc = begin;
if(target==arr[loc])
found = loc;
else
found = -1;
return found;
}
那是因为,如果您没有找到该项目,begin
(并且loc
因为您将其设置为begin
),size
那么您将使用 . 检查超出数组的末端arr[loc]
。
您确实应该在循环后立即正确检查该条件,例如(loc
完全删除,因为它是不必要的):
if (begin == size)
found = -1;
else
found = begin;
无论如何,您的代码可能会大大减少冗长:
int linsearch (T arr[], int size, T target)
{
int loc;
for (loc = 0; loc < size; loc++)
if (target == arr[loc])
return loc;
return -1;
}