指向C ++ 2D数组的指针

时间:2011-12-17 23:07:14

标签: c++

我正在将一些C ++代码移植到Actionscript 3,只是有一个我很困惑的小问题。

在一个函数中,其中一个参数是int* myPtr。 myPtr是2D数组元素&my2DArray[x][y]的地址。 x和y也是函数的参数。我只是对代码访问时访问的内容感到困惑,例如myPtr[1]。我认为这将是my2dArray中的下一个元素,但我不确定这是my2DArray[x+1][y]还是my2DArray[x][y+1]。谢谢你的帮助。

其他信息: my2DArray由以下人员创建:

//initPtr is a int*, auxPtr is a int*, as is temp1
initPtr = (unsigned int *)NewPtr(
      sizeof(unsigned int) *
      X * Y);
  }

  auxPtr = initPtr ;

  for (i = 0; i < X; i++) {
    temp1 = auxPtr + i * Y;
    my2DArray[i] = (short *)temp1;
  } 

unsigned char* NewPtr(
  int size)
{
  return ((unsigned char*)calloc(size, sizeof(unsigned char)));
}

2 个答案:

答案 0 :(得分:0)

这将是my2DArray[x][y+1]。 C ++对多维数组索引使用行主顺序。这意味着内存中的大跳转是最左侧索引中的更改,单个元素跳转是最右侧索引中的更改。

答案 1 :(得分:0)

如果myPtr确实是指向数组中任意单元格的指针,那么,除非您知道2D数组的布局,否则您无法准确。它可能是行中的下一个(假设是标准的C ++ 2D数组,但它可能是一行(如果它在行的末尾)。或者,如果数组实现为一维数组的一维数组,那它甚至可能不是一个合法的地址(它是在行的末尾)。