你好, 欢迎｡
在这节课上我想谈谈 关于多维数组｡
到目前为止, 如果您 我想到一个数组,
你刚才说数组是一个变量, 可以存储许多类型的数据｡
事情可能会变得更复杂｡
你可以有很多 数组的维度｡
如果你有一个线性阵列 这就是我们到目前为止讨论过的, 我们称之为一维｡
我们知道这是一个 尺寸,
因为它只有一个具有一种尺寸的支架｡
c语言允许数组｡ 被罚款的任何尺寸｡
这就像是 嵌套数组, 数组的数组｡
所以二维数组 是最常见的｡
但你可以 三维阵列､
四维阵列 五维数组, 但3,
4和5的用例并不多｡
说真的你要么 我有一个一维数组, 你可以在程序中使用它
､ 或二维阵列｡
二维阵列是常见的, 因为它们本质上表示电子表格中的行和列, 你就可以把它想象成一个矩阵或者表格｡
这是一个二维数组 你有行和列｡
因此您可以存储更多数据 而不是一维数组｡
但它非常适用 因为它看起来像一个矩阵｡
还有一些应用程序 你可能想写一个矩阵的概念
数学应用在这里将是最相关的｡
但是你可以用二维的 数组来做很多不同的事情｡
一个例子是矩阵｡
但同样, 把它想象成一张桌子｡
二维数组 宣告的方式与一维数组相同｡
唯一不同的是你现在 具有另一组括号｡
所以在这个例子中, 我们声明 一个名为matrix的数组,
类型为int, 有4行和5列｡
这意味着你可以存储20个元素 在二维数组中｡
所以你应该知道每个 dimension是用它自己的一对方括号指定的｡
这样你就能很容易地发现 数组有多少个维度｡
如果你有三个括号 将是一个三维数组｡
如果你有四个, 那就是四个｡
这个有两个所以是两个
直到更早的 讲座只有一个维度, 所以我们知道那是一个单一的维度｡
看看这些括号, 请注意｡
同样是4行, 5列, 共20个元素｡
若要初始化二维数组, 它将以一维的方式初始化
数组, 相同的语法类型, 您只需要添加更多｡
所以当你列出元素时 对于初始化, 这些值将按行列出｡
不同的是
当你为每一行输入初始值时, 你要做的是 放在大括号和花括号中,
然后将 大括号之间的所有行｡
所以看起来 就像这样｡
如果我们创建一个数字数组,
它是二维的, 3行4列,
我们想要 初始化它, 您所要做的就是将 然后为每一行添加内部嵌套花括号｡
这里我们初始化值 0次-0至10､ 0次-1至20､
0次-2至30和0次-3至40｡
这就是你如何进入 多维数组｡
您可以使用 列中的行｡
你只要记住 它是基于0的｡
所以左手 第一行第一列是00等于10｡
第1行第2列将为 等于20, 但您可以将其作为数字0
sub-1来访问｡
因为第一个数组包含3 您访问的行, 即您指定的行号和
则列号是用于访问数组的下一个指定｡
但是个性化是很漂亮的 很简单,
只需用括号中的注释将内容分开即可｡
访问它们, 您将访问 就像访问一个普通的数组一样只不过你现在访问的是
列中的行的概念｡
因此, 使用内部对 大括号实际上是可选的,
但应该使用它来提高可读性｡
如果不提供这些大括号, 实际上,
您可以提供10 20 30 40 15 25 35, 但是很难想象你在初始化什么｡
作为程序员, 可读性是 因为它可以提高代码的质量
维护代码就更容易了｡
当我看到这个的时候 我可以很容易地识别,
特别是与评论, 我是什么 初始化为､ 要初始化为的值和数据列｡
如果我把这句话写成一行 只有连续的数字, 我很快就会迷路｡
所以虽然内括号 则使用它们｡
与一维数组一样, 不需要初始化整个数组｡
您可以只初始化某些区域｡
在这个例子中, 我们
创建具有4行和5列的二维数组｡
我们只是在初始化 每行的前3个元素｡
所以第1行第1列是10, 行 1第2列是5, 第1行第3列是负3, 并且
对于第二列也是如此, 依此类推9003231008｡
对于那些我们没有设置的
第4和第5个值, 这些值实际上 自动设置为0, 因为我们忽略了它们｡
在这种情况下, 你实际上 必须提供花括号,
即内部的花括号｡
因为如果我们在这里 它,
初始化会搞砸｡
因为如果你没有 花括号,
它会连续执行｡
所以会发生的是 会初始化前12个元素｡
因此它会初始化所有 元素､ 第二行中的所有元素,
然后 第三行中的前2个元素,
然后是其余元素 在第三行中,
第四行中的其余元素将为0｡
这是一个二维的 4行5列的阵列｡
它会连续执行这些操作｡
所以别忘了带上牙套 如果只想指定某些初始化元素,
则为｡
你也可以做 指定的初始化器｡
记住, 这是C99的概念｡
这在C11中是可选的, 其中
您可以指定要初始化的特定索引｡
因此, 您可以在
初始化列表, 就像在一维数组中一样 要执行指定的初始化程序, 只需执行以下操作｡
所以我们在这里声明矩阵 4行3列的数组, 但我们实际上指定的是 0 0等于1,
1 1等于5, 2
2等于9｡
所以当我们再说一遍22的时候 我们说第2行实际上是第3行因为我们从0开始
列2实际上是列3｡
同样, 将其想象为 表格或电子表格｡
访问元素开始 在左上角｡
但如果你明白 4代表行3代表列
很直观的感觉｡
所以这是因为 将所述矩阵的3个所指示的元素初始化为指定值｡
但你应该 请注意这里的语法｡
此处的所有未指定值 默认为0｡
所以这只会 初始化3个值｡
您所指定的每一组值 要初始化的行中的元素位于大括号之间｡
然后整个初始化 在另一对大括号之间｡
所以你可以看到
外部的花括号, 就像正常的初始化一样 然后我们用括号来访问里面的数组｡
然后我们用逗号 分隔每一行, 并分隔每组行值
从下一个集合开始, 以逗号分隔｡
所以这些值是分开的 以及行索引｡
就因为我们说了
我们有二维空间, 我们已经讨论过了您可以 实际上有很多其他维度｡
我跟你说的一切 2维也适用于3维4维5维｡
所以如果你想声明一个
3维数组, 你可以用3个方括号来表示｡
这是一个名为box的数组 类型为10､ 20和30的整数｡
您可能需要使用 如果你要存储xyz值的话 您可能不需要执行此操作｡
三维数组和 up真的不常见｡
作为总结, 您可以将
作为数据行的一维数组､ 单行､ 二维
数组作为表格矩阵或电子表格, 在三维 数组中, 您可以将其可视化为一堆数据表,
即一堆表｡
如果你需要那么多数据 很难访问它,
而且可能会让人感到困惑｡
任何人只要坚持这个观点 三维数组或更高级别的程序,
它可能会
搞不清楚到底发生了什么, 但你可以做到 如果你需要迭代这些
一个, 两个, 三维数组, 你可能会用到循环｡
维度越多 在循环中, 嵌套的循环就越多
因此, 如果要处理 一个三维数组,
您将有3个嵌套循环
如果您要处理 一个四维数组,
您将有4个嵌套循环
就初始化数组而言 比二维的更高, 你要再次应用
相同类型的东西, 你只需要稍微扩展一下
所以一个三维数组
将有3层嵌套大括号, 内层 包含每行的一组初始化值,
因此 看起来像这样
这里我们有一个三维的 数组2､ 3和4, 实质上是一个数据表堆栈｡
和3行的第一块,
我们将初始化第二个3行的块 我们将初始化｡
所以这又是在说 第一个区块和第二个区块, 因为我们没有初始化
第三和第四块, 只有第一和第二块｡
所以我们有四个街区 可以将每个块看作一堆数据表, 每个
具有行和列的块｡
所以第一个区块是 只初始化前3行, 这是我们仅有的3行｡
然后第二个街区 以初始化接下来的3行, 但第三和第四块
不会被初始化｡
如果要初始化
第三个和第四个方块, 你会有更多的内括号, 花括号等等｡
同样的事情也适用于 未初始化的值,
它们将被初始化为0｡
但你可以看到 它变得非常乏味,
也很难遵循｡
当您要处理元素时 在一个维度数组中,
你会用到嵌套循环.
同样, 它也会对应于 直接与维数有关｡
每个循环都将 在一个数组维度上迭代｡
所以看起来 就像这样｡
这是 三维数组｡
你有一个外循环 则有两个内部循环｡
外部循环将是 第一个外部数组, 因此外部循环实际上会经过 行, 第二个将通过列,
第三个 一个人将穿过街区｡
再强调一次, 你应该注意的是 哇, 这真的很棘手,
很乏味, 很快｡
所以尽量避免立体
四维数组, 我甚至没看到它有什么用处 第一和第二个案例就是您要用到全部
但要理解多维 数组是c语言中的一种可能性, 它是一种存储更多数据和访问
具有许多数据元素的相同名称｡ -谢谢—谢谢