必备技能4.2:二维数组
C++支持创建多维数组。最简单的多维数组就是二维数组。一个二维数组在本质上是由一维数组构成的列表。我们采用下面的方式来声明一个大小为10,20的二维数组twoD:
int twoD[10][20];
请注意上面的声明方式。不像别的计算机语言,它们使用逗号来间隔数组的维数。C++中是把每维的大小单独放置在自己的方括号中。和访问一维数组类似,我们使用多个索引来访问多维数组中的元素,每一维的索引单独放置在自己的方括号中。例如,访问数组twoD中位于3,5处的元素,我们使用twoD[3][5]这样的写法。
在下面的示例程序中,我们为一个二维数组装载数据1到12。
#include <iostream>
using namespace std;
int main()
{
int t, i, nums[3][4];
for ( t = 0; t < 3; t++ )
{
for ( i = 0; i < 4; i++ )
{
nums[t][i] = ( t * 4 ) + i + 1;
cout << nums[t][i] << ' ';
}
cout << "\n";
}
return 0;
}
在上面的这个例子中,nums[0][0]的值将是1,nums[0][1]的值将是2,nums[0][2]的值将是3,以此类推。nums[2][3]的值将是12。从概念上来讲,数组的形式如下:
二维数组是以行-列的矩阵的形式存储的。其中的第一个索引表示的是行,第二个索引表示的是列。这就意味着,当我们以这种二维数组被存储在内存中的方式来访问二位数组的时候,右索引(列)的变化要快于左索引(行)。
我们应该明确所有数组元素的存储都是在编译的时候决定的。用于存储数组的空间在数组的生存期都是有用的。就二维数组而言,我们可以通过下面的公式来计算存储它所需的空间大小,单位为字节。
所需的字节数 = 行数 × 列数 × 数组类型的字节数
这里,我们假设一个整型数占用4个字节,那么维数为10,5的一个整型的二维数组占用的空间的大小就是10×5×4个字节。