#include <stdio.h>
#include <stdlib.h>
typedef int seq_t[2][2][3];
const seq_t centreSequence = {
{
{1,2,3},
{4,5,6},
},
{
{7,8,9},
{10,11,12},
}
};
const seq_t leftSequence = {
{
{13,14,15},
{16,17,18},
},
{
{19,20,21},
{22,23,24},
}
};
const seq_t rightSequence = {
{
{25,26,27},
{28,29,30},
},
{
{31,32,33},
{34,35,36},
}
};
int main(void)
{
int j = 0 , i1 = 0 , i2 = 0 , i3 = 0 ;
const seq_t* sequences[] = {¢reSequence,&leftSequence, &rightSequence };
printf("%d \n",sizeof( sequences ));
printf("%p\n",centreSequence);
printf("%p\n",leftSequence);
printf("%p\n",rightSequence);
for( j = 0 ; j < 3 ; j++ )
{
for( i1 = 0 ; i1 < 2 ; i1++ )
{
for( i2 = 0 ; i2 < 2 ; i2++ )
{
for( i3 = 0 ; i3 < 3 ; i3++ )
{
//最重要的一句
printf("%d ",(*sequences[j])[i1][i2][i3]);
}
printf("\n");
}
printf("\n");
}
printf("\n");
}
}
至于三个多维数组地址之间相隔64个字节在gcc编译我是不知道了,反正vc下它们的地址是连续的,相隔0x30个字节,并且每个数组大小是48字节。