05_数组(二)
// 元素类型 数组名[行数][列数];
// 定义了一个元素类型为 int 类型,数组名为 arr2 ,3行4列的二维数组
int arr2[3][4];
// 初始化
// 按行初始化
int arr3[3][4] = {
{0,1,2,3},
{10,11,12,13},
{20,21,22,23}
};
// 某些元素不给初值
int arr4[3][4] = {
{ 0, 1, 2},
{ 10, 11 },
{ 20 }
};
// 连续初始化
int arr5[3][4] = { 0, 1, 2, 3, 10, 11, 12, 13, 20, 21, 22, 23 };
// 某些元素不给初值
int arr6[3][4] = { 0, 1, 2, 10, 11, 20 };
// 一维数组在定义的同时初始化可以不写数组长度
// 二位数组在定义的同时初始化可以不写行数 但是列数一定要写
// 此时行数 根据初始项的数量(N)来确定 N/列数 12/4 == 3行
int arr7[][4] = { 0, 1, 2, 3, 10, 11, 12, 13, 20, 21, 22, 23 };
// 此时行数 根据初始项的数量(N)来确定 N/列数 10/4 == 3行
// 此时 因为是3行 所以最后两个元素默认值为0
int arr8[][4] = { 0, 1, 2, 3, 10, 11, 12, 13, 20, 21 };
int arr9[][4] = {
{ 0, 1, 2, 3 },
{ 10, 11, 12, 13 },
{ 20, 21, 22, 23 }
};
int arr10[][4] = {
{ 0, 1, 2 },
{ 10, 11 },
{ 20 }
};
// 字符数组
char ch1[][10] = {
"gudlk",
"giua",
"ghjjkg"
};
二 内存
1 二维数组的内存也是连续的
2 总内存 == 单个元素所占内存大小 * 元素个数
3 二维数组也是数组
4 二维数组组的每一行可以看作一个一维数组
三 访问
一) 下标访问
1 数组下标从0开始
int arr3[3][4] = {
{0,1,2,3},
{10,11,12,13},
{20,21,22,23}
};
cout << arr3[1][3] << endl; // 13
二) 指针访问
ps:见后续博文
四 赋值
// 按行初始化
int arr3[3][4] = {
{0,1,2,3},
{10,11,12,13},
{20,21,22,23}
};
cout << arr3[1][3] << endl; //13
arr3[2][3] = 56; //给单个元素赋值
cout << arr3[2][3] << endl; //56
int arr2[3][4];
// 给所有元素赋值
// 通过循环遍历到每一个元素逐个赋值
for (int i = 0; i < 3; i++)//行
{
for (int j = 0; j < 4; j++)//列
{
arr2[i][j] = i * 10 + j;
}
}
// 打印数组
for (int i = 0; i < 3; i++)//行
{
for (int j = 0; j < 4; j++)//列
{
cout << arr2[i][j] << "\t";
}
cout << endl;//打印完一行后换行
}
五 应用(推箱子)
ps:实例见后续博文