欢迎光临散文网 会员登陆 & 注册

第 13 讲:高维数组

2021-09-13 19:10 作者:SunnieShine  | 我要投稿

有没有三维数组?

前文已经描述了一维数组和二维数组的基本语法和使用方式。那么,按道理来说,三维数组或者更高维度的数组是存在的。确实如此。不过……


三维数组的定义

拿三维数组来说,我们要定义一个三维数组,并按照规范初始化赋值,就得是这样的:

都是允许的。具体的赋值原理和原因在前文已经阐述得非常详细了。但需要你注意两个地方。

第一,不完全赋值是可以混用的,比如第一个示例里的赋值模式,在第一个大括号里给了一个 0,这表示会把第一个维度里的所有元素全部赋值为 0。那么第一个维度里包含哪些元素呢?或者说,元素一共多少个呢?

可以从最上面的定义语句的行元素数、列元素数和竖元素数看出,这个三维数组一共有 2 行 3 列 4 竖。不过三维数组复杂的地方在于,它如何规划内存空间。我们依旧按照顺次来看。这个三维数组会分为两个大块来表示行,即这个是一个一维数组,而这个一维数组一共包含两个元素,都存放的是一个二维数组,而这个二维数组内存放着 3 行 4 列的元素,这么一个情况。

不过,可以从分配内存空间来看,三维数组只能省略行元素个数这一个条件。


三维数组的存取数值

三维数组的存取数值的方式和二维数组雷同,不过还是希望你注意的是,每一个维度的索引都是从 0 开始的,所以不要忘了这一点,而超出了数组内存的范围。

将会取出这个数组的第二行、第三列的第四个元素。


更高维度的数组?

是的,C 语言甚至允许你创建四维数组、五维数组等等。那么 C 语言创建数组的上限是多少呢?维度是没有上限一说的,但它受到电脑容量的制约。

如果你尝试把数组元素总数定义得过大的话,就会出现这个错误信息:

这个错误信息意味着你的数组定义得太大了。具体的内容说的是:“函数在栈里使用了 '2147483644' 字节,超出了原本定义的栈大小 '16384',请尝试移动一些数据到堆里去”。

按照 16384 而言,你只能定义一个小于这么多的所占内存的数组。而在外部定义也不可以超过 1073741823 个元素。

所以,请你合理使用内存。


第 13 讲:高维数组的评论 (共 条)

分享到微博请遵守国家法律