c语言、三维数组

刚看c语言做了一个linux下的俄罗斯方块程序, 里面用到的三维数组,有点发懵了,求高手指点
shape[7][4][18]。
三维数组是怎么赋值的,赋值之后的每个值是多少? 什么情况能用到三维数组?

解释明白了可以加分 ~~

先说二维,可以这么理解:
int n[3]有3个int
那么,
int m[5][3]有5个int[3]
赋值时:
n[1]=3把3给1号
m[4]={5,9,4}m[4]是个int[3]类型,这么赋值,也就是这么赋值:
m[4]的[0]是5:m[4][0]=5
m[4][1]=9
m[4][2]=4
懂了吗?三维甚至更多维大同小异,比如
int k[4][5][3]有4个int[5][3]

这个概念应该不难理解的,就是各种类型,不停的加下标,加下标,加下标,下标,标……

曾写过一个模拟7段码(看看红绿灯上的倒计时是怎么显示的),共有2行显示,每行10个数字,每个数字7段,整个系统状态就是用一个bool[2][10][7]确定的追问

那赋值是什么样的?a[2][2][2]={ {0,0,0,0} ,{0,0,0,0}}; 这样么?

追答

你只赋了两维啊。。。而且你的下标是2。这样:
static int a[2][2][2]={ { {1,2} , {3,4} } , { {5,6} , {7,8} } };
分开来讲是这样:先看最高维:把{{1,2},{3,4}}给a[0],{{5,6},{7,8}}给a[1]相当于:
a[0]={{1,2},{3,4}};
a[1]={{5,6},{7,8}};
把一个二维的数据赋给二维的变量,现在不难理解了吧

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-20
在C语言中,多维数组的存放规律都是第一维下标变化的最慢,越往后维数越高,下标变化越快,例如:对于三位数组a[2][2][2],其赋值顺序就是:
a[0][0][0]
a[0][0][1]
a[0][1][0]
a[0][1][1]
a[1][0][0]
a[1][0][1]
a[1][1][0]
a[1][1][1]
总结的说,就是“维数最高优先存储”
至于什么情况用三维数组,这要看你编程思想了,当你想编的程序抽象成三维的东西,就用三维数组来表示,就如矩阵似的,我们把矩阵看成是一个图,二维的,所以用了二维数组
希望可以帮助你追问

那赋值是什么样的?a[2][2][2]={ {0,0,0,0} ,{0,0,0,0}}; 这样么?

本回答被网友采纳
第2个回答  2012-06-20
三维数组和二维数组一维数组一样啊,使用的时候用3个下标,下标的起点也是0
初始化也就是二维数组的推广,因为是行序优先存放,所以没有完全初始化的后面的元素自动赋初值0
如果有三个控制量就用三维数组啊,比方是三维空间xyz
第3个回答  2019-10-07
你就想象成全是一维的,C原来设计也只有一维。你可以想象成有个特殊的数组里面每个元素又是一个数组,而这个数组里面的每个元素他又是一个数组。你要说用线性代数可以空间理解,但是3维以上你给我空间想象一下啊,我想不到。指针当然要占内存。虽然它指向某个内存的地方,但是他同样需要某个东西指向它啊。打个比方好比它就是个路标,指向某个方向。但是机器编译需要知道指向路标的路标一样。我是这样理解的。
第4个回答  2020-07-04
一位数组是由数组成,打印时是一行,
二位数组是由一位数组组成,打印时是几行几列
那么三位数组是由二位组成,打印时是几个几行几列,
比如要打印几个班所有学生不同学科的成绩时就可以用.
相似回答