#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,知道吗?