c++ - 使用指针修改数组元素

标签 c++

我正在开发一个仅使用指针修改数组数据的程序。我试图返回 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

在线示例:https://rextester.com/KVCL75042

关于c++ - 使用指针修改数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55918400/

相关文章:

c++ - 人们如何分发对 boost 模块具有二进制依赖性的 boost 程序?

c++ - 什么是具有自己类类型的良好二维数组替代方案

c++ - Switch 语句输出错误的成本值

c++ - OpenGL渲染器类设计: flexible and simple?

c++ - Mac OSX 下的 TCHAR 和 _tprintf

c++ - __attribute __((__ packed__))有什么区别;和#pragma pack(1)

c++ - 如果不同的内核具有不同的 L1 缓存,为什么会出现缓存 ping-ponging 和问题?

c++ - Outlook - 从显示名称获取电子邮件地址。适用于 Python,不适用于 C

c# - C# 可以强制转换 const 吗?

c++ - 线程缓存对象引用