C ++将值分配给数组的索引10会影响索引0

时间:2011-12-10 15:56:15

标签: c++ visual-studio

我有一个二维数组,里面有信息,有10个索引。当我运行以下代码时:

for(int studentIndex = 0; studentIndex < numOfStudents; studentIndex++)
{

    if(grade[studentIndex][9] > 59){
        grade[studentIndex][10] = 1; // 1 stands for pass
    }else{
        grade[studentIndex][10] = 0; // 0 stands for fail
    }       

}

grade[studentIndex][10]更改了下一个索引的grade[studentIndex][0]。问题出在那里,因为当我cout在此部分之前索引0时,该值很好但在此之后它变为1或0.

2 个答案:

答案 0 :(得分:3)

在大小为10的数组中,最高指数为9,因为索引从0开始。我猜测等级[index] [10]基本上是将指针推向等级[index + 1] [0]并且这就是你看到这种行为的原因。你需要将学生信息数组扩大到11或者弄清楚你的索引是否错误。

答案 1 :(得分:2)

  

下一个索引的等级[studentIndex] [0]

这使得grade被定义为int grade[numOfStudents][10](或在该方向上的某些内容)。子阵列的有效索引仅为09