首页 > 解决方案 > 在 C++ 中声明多维数组时,为什么只需要指定第二维的大小?

问题描述

例如,为什么 arr[ ][5] 可以,但 arr[5][ ] 不行?这个想法如何扩展到更大的维度?例如,您可以合法地将一个三维数组定义为 arr[ ][ ][5] 吗?

我只是第一次了解 MDA,我很难理解这一点,所以我很想听听解释/演练。谢谢!

标签: c++arraysmultidimensional-array

解决方案


为什么 arr[ ][5] 可以,但 arr[5][ ] 不行?

因为如果你有“任意数量的 5 样东西的组”,你可以将它们全部连续地放在内存中,并准确地知道每样东西的去向——第一组 5 样东西去某个地方,然后下一组去 5 个值得——之后的空间,依此类推。但是如果你有“5组任意数量的东西”,那么你就不会提前知道第二组和后续组需要去哪里。此外,您不能保证组的大小都相同,这就是矩形阵列应该如何工作的。


推荐阅读