C语言二维数组的第一维怎么求?

Python053

C语言二维数组的第一维怎么求?,第1张

这个定义代表每一维有三个数,所以a[0]中存放的是1.2.3.;a[1]中存放的是4.5.6a[2]中存放的是7.8.0。应该是这样。你要问大小,是不是占的存储空间啊?那第一维是三个字节!

最好分配为一维指针。下面代码是分配D1 * D2 * D3 * D4维四维指针内存。

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格的一个面)