JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

【第60集】北京大学公开课:三维数组的定义

wys521 2024-11-16 01:44:59 精选教程 26 ℃ 0 评论

二维数组的初始化(6/6)。

有了二维数组,我就可以在二维数组的基础上再去定义三维数组。比方既然可以把二维数组看作多个一维数组所组成的集合,三位数组也可以这样来看待。

比方先定一个二位数组a三四,接下来再定一个二位数组a三四,再定一个,再定一个,再定一个,定义了五个二位数组。然后给这些二位数组都起上名字,第一个数组命名为a零,第二个数组a一,第三数组a二,第四个数组a三,第五个数组a四。

通过这种方式,其实就完成了一个三维为数组intera五三四的定义,也就定义了一个三维数组。有的同学可能就困惑了,a三四很好理解,三行四列的数组,a五三四怎么去理解?也很好办。

看一个图,假设这个立方体就对应着刚才所定义的三位数组,这个立方体的高是三,它的宽是四,它的深是五。如果把a五三四这样一个数组看作这样一个立方体,这个立方体就可以被切成很多片。比方像切豆腐一样就可以把第一块切下来,这样一片就对应了一个二位数组a三四。

也就是对于一个三维数组可以这样来理解,第一维表示了三维数组包含多少片,什么叫片?这就是一片,然后它的第二维说明了每一片里边包含多少行,这个就对应着二位数组里面的行数。最后一个是每一行里头包含多少列,对应着四,这就是三位数组的含义。

关键就在于完全可以把第一维想象成很多片,所以对于一个这样的三维数组完全可以把它切成很多片。比方看这个图,一下子给它切成了五片,每一片都是一个三行四列的二位数组,每一片都有一个标识,第一片是a零,第二片a一,第三片a二,第四片a三,第五片a四。

三位数组跟二位数组之间是这样的一种关系,有了一个这样的数组以后怎么在内存里边把三位数组给存下来?有了刚才二位数组的存储方式,同学们也就不难想象三位数组的存方式了。

比方这样一个三位数组就可以这样来把它存下来,因为可以切成二位数组,所以可以把每一个二位数组都存放在一片区域里头。比方把这个二位数组可以存放在这样的一个区域里头,把第二个二位数组存放在这样的一个区域里头。二位数组再存放在这样的区域里头,第四个二位数组存放在这个范围里头等等。

也就是说把三位数组切成二位数组来存储,二位数组拉成一位数组来存储,于是在内存里头无论是一位数组、二位数组、三位数组全部被拉成一条线来存储,这就是它的存储方式。

了解了三位数组之后有的同学可能就要问了,能不能定义四位数组?当然可以,可以定义四位、五位、n位数组都可以。但是要知道定义维度更高的数组意味着这个数组到底是怎样构成的将会更难以想象,于是会严重的影响程序的可读性。

所以除非在非常特殊的情况下真的不要去试图定义一个三维以上的数组,因为它非常的难以想象从而使得程序难以被别人读懂,而且写这样的程序本身就是一个非常容易犯错误的过程。所以至少在这个课上不要去定义三维以上的数组,而且就算三维数组在这个课上也要尽可能少的去使用,因为目的是要写出更有生命力的程序来。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表