这个指针数组我已经晕菜了

#include
#include
void main(void)
{
/*声明创建指针数组*/
int A[2][3][4]={{{1,2,3,4},{5,6,7,8},{9,10,11,12}},{{13,14,15,16},{17,18,19,20},{21,22,23,24}}};

int * pA=A[0][0];                         /*为指针变量赋值*/
for(int i=0;i<2;i++)                      /*第一维*/
    for (int j=0;j<3;j++)                   /*第二维*/
        for(int k=0;k<4;k++)               /*第三维*/
            printf("%d ",*(pA+i*3*4+j*4+k)); /*遍历输出*/
        pA=A[0][0];                                 /*使pA重新指向数组开头*/
        printf("\n");                                 
        for(int m=0;m<sizeof(A)/sizeof(int);m++)
        {
            printf("%d ",*pA);
            pA++;
        }
        getch();
        }

我用单步执行。一个一个的问:
图片说明
首先看图 那个值1245076是什么东西?这不是内存地址啊。

int x = (int)(int *)&A[2][3][4];
加上这行,看的很清楚,那个值是地址。

右击可以选择十六进制或十进制切换。
A[2][3][4]应该是个随机的值。反正是越界的东西,你也不用,不必专研。

c/c++中数组下标是从0开始的,A[2][3][4]是个随机值。你能正确访问的范围是 000~233,知道吗?