多维数组
如果把C++中的变量看做几何学中的“点”,那么一维数组就是由点组成的“线”,二维数组就可以看做是由线组成的“面”,三维数组就可以看做是由面组成的“长方体”,四维数组就可以看做是由长方体组成的线…..
1.二维数组
(1)声明二维数组
二维数组最直观的感觉就是像一个“表格”,由行和列构成。我们来声明一个二维数组:
int myArray[3][4];
在这个声明中,myArray是一个包含3行和4列的整型二维数组。这意味着它可以存储12个整数(3行 * 4列)。
(2)初始化二维数组
与一维数组一样,在声明二维数组的时候可以同时对数组进行初始化,比如:
int myArray[3][4] =
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
(3)二维数组元素的引用
因为二维数组逻辑结构上是以表格的形式来组织的(物理结构上仍然是线性的),所以要访问或引用一个二维数组的元素需要同时指定行和列的索引。比如:
int vale = int myArray[1][2];
(4)遍历二维数组
可以使用嵌套的for循环来遍历二维数组中的所有元素。以下是一个遍历示例:
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
cout << myArray[i][j] << " ";
}
cout << endl;
}
在这个例子中,外层循环遍历每一行,内层循环遍历每一列,并输出每个元素的值。他的顺序是从左上角开始向右扫描,直到输出右下角最后一个元素结束。
(5)二维数组的对角线
对于n行n列(n为奇数)的二维数组,有明显的两条对角线。从左上到右下的对角线上每个元素的行(用i表示)、列(用j表示)坐标都是相同的;对角线一侧i>j,另外一侧i<j。从右上到左下的对角线上每个元素行、列坐标的和都等于n。对角线一侧i+j>n,另外一侧i+j<n。
(6)二维数组元素的定位
对于n行m列的二维数组array。假设某个元素为array[i][j],则:
上方元素:array[i-1][j] i-1>=0
右上方元素:array[i-1][j+1] i-1>=0,j+1<m
右侧元素:array[i][j+1] j+1<m
右下方元素:array[i+1][j+1] i+1<n,j+1<m
下方元素:array[i+1][j] i+1<n
左下方元素:array[i+1][j-1] i+1<n,j-1>=0
左侧元素:array[i][j-1] j-1>=0
左上方元素:array[i-1][j-1] i-1>=0,j-1>=0
