[英]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.