怎么理解三维数组?

我开始不太理解三维数组输出的画长什么样》

直接上程序!!!!!(下面的程序是以行为优先的数组为例

#include <stdio.h>

int main(int argc, char *argv[])
{
int array[3][2][2] = {0,1,2,3,4,5,6,7};//相当于3个2 * 2 的二维数组
printf("%d %d %d %d\n",&array[0],&array[0][0],&array[0][0][0],&array);
//如果说把三维数组比作一个立方体的话,那么这个立方体底边是个2*2的正方形,高为3
//注意:三维数组的高维度是写在最前面的,也就是立方体的z

//下面的四行代码相当于立方体的第一层
printf("%d \n",&array[0][0][0]);
printf("%d \n",&array[0][0][1]);
printf("%d \n",&array[0][1][0]);
printf("%d \n",&array[0][1][1]);
//下面的四行代码相当于立方体的第二层
printf("%d \n",&array[1][0][0]);
printf("%d \n",&array[1][0][1]);
printf("%d \n",&array[1][1][0]);
printf("%d \n",&array[1][1][1]);
//下面的立方体相当于第三层
printf("%d \n",&array[2][0][0]);
printf("%d \n",&array[2][0][1]);
printf("%d \n",&array[2][1][0]);

printf("%d \n",&array[2][1][1]);


/*如果给出一个数组首地址,那么以求最后一个元素array[2][1][1]的地址为例
最后一个元素的地址 = (最高一层立方体底下的所有元素的个数 + 元素所在层的除了元素所在行的所有元素
+ 元素所在行的除自己之外的所有元素)* 一个元素所占字节数 + 数组首地址;

公式也就为Loc(Aijk) = (i * 2 * 2 + j * 2 + k) + Loc(A000); */

//注意这个i,j,k的值是2.1.1.但是其实这个数组是开始初始化的大小是【3】【2】【2】,因此在公式中不需要-1的操作。

//另:上面的输出顺序也是三维数组的赋值顺序
return 0;

}


转载:https://blog.csdn.net/qq792326645/article/details/47320659

猜你喜欢

转载自blog.csdn.net/qq_36098284/article/details/80621699
今日推荐