为什么这个功能永远不会回来?这是一个分段错误吗?

时间:2015-01-16 18:45:27

标签: c segmentation-fault

int position_of_largest(int * array, int size)
{
  int largest, i, largest_i;
  i = 0;
  largest_i = 0;
  while (i < size)
  {
    if (i == 0)
    {
      largest = array[0];
      largest_i = 0;
    }
    else
    {
      if (largest < array[i])
      {
        largest_i = i;
        largest = array[i];
      }
      i++;
    }
  }

  return largest_i;
}

此代码应该找到数组中最高元素的索引并返回它。 显然,这段代码中存在分段错误,但我不知道它是什么!我已多次查看代码,但我没有看到任何问题。我是C的新手,顺便说一句(这解释了很多)。谢谢。

1 个答案:

答案 0 :(得分:3)

它不会导致分段错误,但此代码会进入无限循环。这是因为您将i++放在else块中。永远不会增加。

将其放在else块之外。

else { 
    if (largest < array[i]) {
        largest_i = i;
        largest = array[i];
    } 
}
i++;