我正在开发一个仅使用指针修改数组数据的程序。我试图返回 array[ix]==0 的索引。然而,我却一直陷入无限循环。我做错了什么?
int firstprime(int size, int arr[]){
int* end = arr + size;
int* begin = arr;
while(begin<end){
if(*begin==0)
return *begin;
begin++;
}
return -1;
}
最佳答案
您可以很容易地使用std::distance
来获取索引。
有关 std::distance
here 的更多信息
顺便说一句,函数名称也很容易让人误解。如果函数要返回数组中值的索引,请考虑更改该函数名称,例如 getIndex()
或 find()
。选择更有意义的东西即可。
#include <iostream>
int firstprime(int size, int *arr)
{
int *begin = arr;
int *end = begin + size;
while( begin < end )
{
if(*begin==0)
return std::distance(arr, begin);
begin++;
}
return -1;
}
int main()
{
int array[10] = {1,2,3,4,0,6,7,8,9,10};
int p = firstprime(10, array);
std::cout<< "0 found at index: " << p <<std::endl;
}
结果是:
0 found at index: 4
关于c++ - 使用指针修改数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55918400/