繁体   English   中英

为什么此功能永不返回? 这是分段错误吗?

[英]Why does this function never return? Is it a 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的新手,顺便说一句(解释很多)。 谢谢。

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

将其放置在else块之外。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM