const int D1 = 5
const int D2 = 6
const int D3 = 7
const int D4 = 8
int i, j, k
int ****a = (int****) malloc(sizeof(int***)* D1)
for(i = 0i <D1++i)
{
a[i] = (int***) malloc(sizeof(int**) * D2)
for(j = 0j <D2++j)
{
a[i][j] = (int **) malloc(sizeof(int*) * D3)
for(k = 0k <D3++k)
{
a[i][j][k] = (int*) malloc(sizeof(int) * D4)
}
}
}
一维的可以理解为行形式
二维的是行列式
三维的可以这样理解
每一个[]代表一个方向 当然三维以上的数组不太容易用实体模式想像 但大概方式是一样的
先搞明白1 2 3维对应于下标的方式 指针 地址的对应关系
比如对于int a[2][3][4]而言
a[1] a[1][1] a[1][1][1] a[1][1][3] a[1][2][0]
搞清以上几项的地址关系
组数基本我们可以按行读来理解[具体对应于代码]
即 1维 从左向右读
2维 a[2][3] 从左向右工a[][0]~a[][2] 3格 成为一行 每一行对应一个a[]
三维a[4][2][3]的在此基础上增加到4个层面 (原来的2维对应为2*3格的一个面)