二维数组
什么是二维数组?
二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 数组名[常量表达式][常量表达式]。二维数组又称为矩阵,行列数相等的矩阵称为方阵。对称矩阵a[i][j] = a[j][i],对角矩阵:n阶方阵主对角线外都是零元素。
定义并初始化:int bb[2][3] = { { 1, 2 ,3}, { 4, 5,6 } };
该定义意味着:bb是一个包含2个元素的数组,其中每一个元素都是由3个整形大小组成。
bb[0]:bb[0][0],bb[0][1],bb[0][2]; bb[0]代表第一个元素的数组首地址
bb[1]: bb[1][0],bb[1][1],bb[1][2]; bb[1]代表第二个元素的数组首地址
二维数组bb相当于定义了2个一维数组,每个一维数组存储了3个的内存地址,每个地址可以存储一个整形大小的值
代码:
#include <iostream>
using namespace std;
int main()
{
int bb[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } };
cout << "int bb[2][2] = { { 1, 2 }, { 3, 4 } };" << endl;
cout << "bb=" << bb<< " *bb=" << *bb << " bb[0]=" << bb[0] << " &bb[0]= " << &bb[0] << " &bb[0][0]=" << &bb[0][0] << endl;
cout << "bb+1=" << bb + 1 << " *bb=" << *bb + 1 << endl;
cout <<"**(bb + 1)=" <<**(bb + 1) << endl;//同列跨行
cout << "*(*bb + 1)=" << *(*bb + 1) << endl;//同行跨列
system("pause");
return 0;
}
运行结果:
现在就不难理解bb=*bb=bb[0]=&bb[0]=&bb[0][0]
代码中我们可以理解:bb+1 跨行同列 *bb+1 为同行跨列