C 为什么这个函数永远不会返回?这是分割错误吗? int-position\u的最大值(int*数组,int-size) { int最大,i,最大_i; i=0; 最大_i=0; 而(i

C 为什么这个函数永远不会返回?这是分割错误吗? int-position\u的最大值(int*数组,int-size) { int最大,i,最大_i; i=0; 最大_i=0; 而(i,c,segmentation-fault,C,Segmentation Fault,这段代码应该找到数组中最高元素的索引并返回它。 显然,这段代码中有一个分段错误,但我不知道它是什么!我已经查看了很多次代码,没有发现任何问题。顺便说一句,我是C语言的新手(这解释了很多)。谢谢 它不会导致分段错误,但该代码会进入无限循环。这是因为您将i++放在else块中。它永远不会递增 将其置于else块之外 int position_of_largest(int * array, int size) { int largest, i, largest_i; i = 0; larg

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

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

将其置于
else
块之外

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;
}
else{
if(最大<数组[i]){
最大_i=i;
最大=数组[i];
} 
}
i++;

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

将其置于
else
块之外

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;
}
else{
if(最大<数组[i]){
最大_i=i;
最大=数组[i];
} 
}
i++;

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

将其置于
else
块之外

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;
}
else{
if(最大<数组[i]){
最大_i=i;
最大=数组[i];
} 
}
i++;

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

将其置于
else
块之外

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;
}
else{
if(最大<数组[i]){
最大_i=i;
最大=数组[i];
} 
}
i++;


分段错误是指您试图访问未分配或未授权的内存空间。。我希望当您调用函数
position\u of_max(int*array,int size)
时,您正在向
array
指针发送指向足够内存空间(size*4字节)的指针,我们能看到函数的调用吗?而且,
i++
永远不会被执行。@haris:有时。当您使用的是正确类型的机器并且运气不好时。@重复数据消除或不幸运气如何?关于分段错误是什么:分段错误是指您试图访问未分配或未授权的内存空间。。我希望当您调用函数
position\u of_max(int*array,int size)
时,您正在向
array
指针发送指向足够内存空间(size*4字节)的指针,我们能看到函数的调用吗?而且,
i++
永远不会被执行。@haris:有时。当您使用的是正确类型的机器并且运气不好时。@重复数据消除或不幸运气如何?关于分段错误是什么:分段错误是指您试图访问未分配或未授权的内存空间。。我希望当您调用函数
position\u of_max(int*array,int size)
时,您正在向
array
指针发送指向足够内存空间(size*4字节)的指针,我们能看到函数的调用吗?而且,
i++
永远不会被执行。@haris:有时。当您使用的是正确类型的机器并且运气不好时。@重复数据消除或不幸运气如何?关于分段错误是什么:分段错误是指您试图访问未分配或未授权的内存空间。。我希望当您调用函数
position\u of_max(int*array,int size)
时,您正在向
array
指针发送指向足够内存空间(size*4字节)的指针,我们能看到函数的调用吗?而且,
i++
永远不会被执行。@haris:有时。当您使用的是正确的机器并且运气不好时。@重复数据消除程序或者不幸的运气如何?关于分段错误是什么:@lisacarlisle haccks如果您“接受”答案,也会笑@如果你“接受”这个答案,利萨卡利尔·哈克斯也会笑@如果你“接受”这个答案,利萨卡利尔·哈克斯也会笑@如果你“接受”这个答案,利萨卡利尔·哈克斯也会笑!