我正在将一些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)));
}
答案 0 :(得分:0)
这将是my2DArray[x][y+1]
。 C ++对多维数组索引使用行主顺序。这意味着内存中的大跳转是最左侧索引中的更改,单个元素跳转是最右侧索引中的更改。
答案 1 :(得分:0)
如果myPtr确实是指向数组中任意单元格的指针,那么,除非您知道2D数组的布局,否则您无法准确。它可能是行中的下一个(假设是标准的C ++ 2D数组,但它可能是一行(如果它在行的末尾)。或者,如果数组实现为一维数组的一维数组,那它甚至可能不是一个合法的地址(它是在行的末尾)。