for循环与调试器无法正常工作

时间:2013-05-04 02:06:04

标签: c++ debugging for-loop

我必须将一个数组复制到另一个数组。它们都是int *形式。我必须复制它直到索引读取-1,但它继续复制。我尝试使用调试器。达到-1后,它继续复制其余顶点中的数据。

void copy(int *a, int *b)
{
    int i=0;

    while(a[i]!=-1)
    {
        if(a[i]==-1)
            break;
        //for( i=0; a[i]!=-1; i++)
            a[i]=b[i];
        i++;
    }

    a[i]=b[i];
}


copy(temp->patharray,num);

patharray和num都是int *

3 个答案:

答案 0 :(得分:2)

看起来你要复制,直到你在源数组中有-1,但你的所有检查都是针对目标数组中的先前值

while(b[i]!=-1)
{ 
   a[i] = b[i];
   i++;
}

附注:拥有良好的变量名称可使代码更易于阅读和理解 - 请尝试

void copy(int *destination, int *source, int maxLength) 
{
  int currentIndex = 0;

  while(currentIndex < maxLength && source[currentIndex] != -1)
  {
     destination[currentIndex] = source[currentIndex];
     currentIndex++;
  }
}

答案 1 :(得分:0)

您在{/ 1>增加a[i]之后正在测试i 。这意味着您尚未分配a[i]。可能是您应该检查b[i] != -1

答案 2 :(得分:0)

假设数组b的大小等于数组a,

void copy(int *a, int *b)
{
    int i=0;

    while(b[i]!=-1)  
    {
        a[i]=b[i];
        i++;
    }
}