2011-12-17 184 views
1

我将一些C++代码移植到Actionscript 3,并且只是有一个我很困惑的小问题。指向C++ 2D数组的指针

在一个功能中,其中一个参数是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

请注意:initPtr被分配为一个无符号整数的数组,但它通过my2DArray作为短裤被访问。 –

回答

0

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

0

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

+0

我添加了它是如何创建的。 – user1103976