在vc++2003中,动态开辟了一个二维数组
int **testArray = new int *[Width];
for(int i = 0; i < Width; i++)
{
testArray[i] = new int[Height];
memset(testArray[i],0,Height*sizeof(int));
}
然后调用时出现问题,我是这样调用的:
reInitialize(testArray[0],Width,Height)函数部分:
void reInitialize(int *testArray,int Width,int Height)
{
for (i=0; i<Width; i++)
for (j=0; j<Height; j++)
                  {
                      testArray[i*nHeight+j]=999;//此处简化步骤,表意即可
                  }}
最后返回主函数后的结果是有一部分testArray[i][j]没有被赋值为999;
想请问这里有错误么?

解决方案 »

  1.   

    testArray[i*nHeight+j]=999;//此处简化步骤,表意即可
     i*nHeight+j ??
      

  2.   


    testArray[i*nHeight+j]=999;//此处简化步骤,表意即可 
    ======
    这可是一维数组啊
      

  3.   

    直接用stl不是很好吗?
    vector< vector<int> > arr(n, vector(n,0));
      

  4.   

    to yshuise():我是新手,昨天才会动态开辟数组,请教了
      

  5.   

    void reInitialize(int *testArray,int Width,int Height)
    {
    for (int i=0; i<Width; i++)
    for (int j=0; j<Height; j++)
      testArray[i*Height+j]=9;//此处简化步骤,表意即可 for ( i=0; i<Width; i++)
    {
    for (int j=0; j<Height; j++)
    {
      cout << testArray[i*Height+j] <<"\t";
    }
    cout<<"\n";
    }
    }
    这是对的.