03-1 二维数组及二维数组的定义方式
二维数组是什么:二维数组相当于在一维数组的基础之上增加了一个维度。
二维数组的定义方式:
二维数组一般来说有 4 种定义方式。
-
数据类型 数组名称 [行数][列数];
int arr1[2][3]; arr1[0][0] = 10; arr1[0][1] = 20; arr1[0][2] = 30; arr1[1][0] = 40; arr1[1][1] = 50; arr1[1][2] = 60; for (int i = 0;i < sizeof(arr1) / sizeof(arr1[0]); i++) { for (int y = 0;y < sizeof(arr1[0]) / sizeof(arr1[0][0]);y++) { cout << arr1[i][y] << endl; } }
-
数据类型 数组名称 [行数][列数] = {{数据 1,数据 2...} , {数据 3,数据 4...}};
int arr2[2][3] = { {1,2,3},{4,5,6} }; for (int i = 0;i < sizeof(arr2) / sizeof(arr2[0]); i++) { for (int y = 0;y < sizeof(arr2[0]) / sizeof(arr2[0][0]);y++) { cout << arr2[i][y] << endl; } }
当然,也可以这样创建。
int arr2[2][3] = { {1,2,3}, {4,5,6} };
这样子看上去更直观。
-
数据类型 数组名称 [行数][列数] = {数据 1,数据 2,数据 3,数据 4};
int arr3[2][3] = { 1,2,3,4,5,6 }; for (int i = 0;i < sizeof(arr3) / sizeof(arr3[0]); i++) { for (int y = 0;y < sizeof(arr3[0]) / sizeof(arr3[0][0]);y++) { cout << arr3[i][y] << " "; } cout << endl; }
-
数据类型 数组名称 [ ][列数] = {数据 1,数据 2,数据 3,数据 4};
int arr4[][3] = { 1,2,3,4,5,6 }; for (int i = 0;i < sizeof(arr4) / sizeof(arr4[0]); i++) { for (int y = 0;y < sizeof(arr4[0]) / sizeof(arr4[0][0]);y++) { cout << arr4[i][y] << " "; } cout << endl; }
我们创建一个二维数组,可以使用嵌套循环的方式打印:
int arr2[2][3] = { {1,2,3},{4,5,6} };
for (int i = 0;i < 2; i++)
{
for (int y = 0;y < 3; y++)
{
cout << arr2[i][y] << endl;
}
}
但是我觉得烦,原因是我想要自动计算行数列数。但是可以使用sizeof(arr) / sizeof(arr[0])
计算行数,sizeof(arr[0]) / sizeof(arr[0][0])
计算列数。
那么,输出一个二维数组全部的元素就可以变成:
for (int i = 0;i < sizeof(arr) / sizeof(arr[0]); i++)
{
for (int y = 0;y < sizeof(arr[0]) / sizeof(arr[0][0]);y++)
{
cout << arr[i][y] << endl;
}
}
如果想打印成一个矩阵的样子,那么可以:
for (int i = 0;i < sizeof(arr) / sizeof(arr[0]); i++)
{
for (int y = 0;y < sizeof(arr[0]) / sizeof(arr[0][0]);y++)
{
cout << arr[i][y] << " ";
}
cout << endl;
}
总结:在创建一个二维数组的时候。可以不写行数,但是列数必须要写。不过还是建议使用数据类型 数组名称 [行数][列数] = {{数据 1,数据 2...} , {数据 3,数据 4...}};
的方法来写,这样很清晰很清楚。
:-)