C语言入门进阶——二维及多维数组

上篇教程中,我们使用一个数组用以描述俄罗斯方块中的某一个形状,如:

在分析方块的数据结构时,我们指出,最宽的是横条,它有4个小方块的宽度;最高的是竖条,它有4个小方块的高度。我们选择最宽与最高的形状组成一个网格,而游戏中所涉及到的形状都可以放在这个网格中。

在这里,网格一词间接指明了它是一个二维对象。如果我们所使用的语言也具有描述这种网格的数据类型,那它也就可以用来描述俄罗斯方块的数据结构。在C语言中,这种网格数据称为二维数组。与之相对,我们以前使用的数组就称为一维数组。

一个二维数组可以理解为由行与列构成的一张表。这样,上面的shape可以定义为:

对于二维数组,我们可以使用双层循环进行遍历。

注意,这是我们第一次使用双层for循环结构,可能会让你有些措手不及。我们知道,在C语言中,用一对花括号{}可以形成一个语句块。在语句块中,你可以书写任何合法的语句,就是这么个道理。

双层循环结构,是由外向内执行的。它的行为与我们军训时队列报数是一个道理。第一排1,2,3,4...第二排9, 10, 11....

多维数组

2维或2维以上的数组可以称之为多维数组,C语言也是支持这些定义的。当然,维数越多理解就越复杂。对于多维数组的描述,使用组的概念会列加清晰,如3维数组 arr[2][3][4],我们可以读作:数组arr有两个大组,每个大组包含3个小组,每个小组包含4个元素。因为4后面没有维度了,所以它是元素数了。多维数组中元素的个数就是各个维度相乘的结果,或许把步骤写出来更清晰一些。

理解了这个概念之后,那下面这个4维数组就没有任何难度了。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180620A21N8C00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券