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的新手,顺便说一句(这解释了很多)。谢谢。
答案 0 :(得分:3)
它不会导致分段错误,但此代码会进入无限循环。这是因为您将i++
放在else
块中。永远不会增加。
将其放在else
块之外。
else {
if (largest < array[i]) {
largest_i = i;
largest = array[i];
}
}
i++;