二维数组怎么定义

什么是二维数组

二维数组,也称为矩阵,是指由多个一维数组组成的数组,每个一维数组又是由多个元素组成的数组。

与一维数组不同的是,二维数组由行和列组成,表示为一个矩阵。我们可以使用行和列的下标来访问二维数组中的元素。以下是一个常见的二维数组的例子:

int arr[3][4] =

{

{0, 1, 2, 3} , // 初始化第 1 行元素

{4, 5, 6, 7} , // 初始化第 2 行元素

{8, 9, 10, 11} // 初始化第 3 行元素

};

定义二维数组

方法一:指定行和列的大小

我们可以通过指定行和列的大小来定义一个二维数组。下面是一个例子:

int arr[3][4];

上面的例子定义了一个3行4列的二维数组,在定义时不需要给出初始值。

方法二:初始化二维数组

我们也可以在定义二维数组时同时对其进行初始化,例如:

int arr[3][4] =

{

{0, 1, 2, 3} ,

{4, 5, 6, 7} ,

{8, 9, 10, 11}

};

上面的例子中,我们使用了花括号来初始化数组的所有元素,先给出了第一行的元素,紧接着是第二行的元素,最后是第三行的元素。

方法三:动态分配空间

我们也可以使用动态内存分配的方式来定义二维数组,在大量数据处理时经常会使用这种方法,例如:

int** arr;

arr = new int*[3];

for(int i = 0; i < 3; ++i)

arr[i] = new int[4];

上面的例子中,我们先定义一个指向指针的指针arr,然后使用new运算符动态分配arr的行空间(new int*[3]),再分配每行的列空间(new int[4])。

在使用完二维数组后,我们还需要使用delete运算符释放空间,例如:

for(int i = 0; i < 3; ++i)

delete [] arr[i];

delete [] arr;

二维数组的访问

在二维数组中,我们可以使用两个下标来访问数组中的元素,第一个下标表示访问的是哪一行,第二个下标表示访问的是该行中的哪个元素,例如:

int arr[3][4] =

{

{0, 1, 2, 3} ,

{4, 5, 6, 7} ,

{8, 9, 10, 11}

};

for (int i = 0; i < 3; ++i)

{

for (int j = 0; j < 4; ++j)

{

cout << arr[i][j] << " ";

}

cout << endl;

}

通过上面的代码,我们可以输出数组中的所有元素。

二维数组的应用

二维数组在实际开发中经常用到,以下是一些常见的应用场景:

表示表格数据

我们可以将二维数组用于表示表格数据,例如一个学生成绩表。下面是一个例子:

string names[] = { "Tom", "Jerry", "Linda", "Amy" };

double scores[][3] = {

{ 80.5, 90.0, 91.5 },

{ 91.0, 88.0, 92.5 },

{ 85.5, 86.5, 84.0 },

{ 93.5, 95.0, 94.5 }

};

for (int i = 0; i < 4; ++i)

{

cout << names[i] << "的成绩:";

for (int j = 0; j < 3; ++j)

{

cout << scores[i][j] << " ";

}

cout << endl;

}

上面的例子中,我们使用了一个一维数组存储学生姓名,另一个二维数组存储每个学生的三科成绩,从而得到学生成绩表。

表示图像数据

图像数据通常是一个二维的矩阵,我们可以使用二维数组来表示图像数据。

下面是一个示例代码:

int image[256][256];

for (int i = 0; i < 256; ++i)

{

for (int j = 0; j < 256; ++j)

{

image[i][j] = i * j / 256;

}

}

上面的代码中,我们生成了一个灰度图像,像素值由行和列下标计算得到。

表示迷宫地图

迷宫地图通常也是一个二维的矩阵,我们可以使用二维数组来表示迷宫地图。

下面是一个示例代码:

const int N = 5;

int map[N][N] = {

{ 1, 1, 1, 1, 1 },

{ 1, 0, 0, 0, 1 },

{ 1, 0, 1, 0, 1 },

{ 1, 0, 0, 0, 1 },

{ 1, 1, 1, 1, 1 }

};

for (int i = 0; i < N; ++i)

{

for (int j = 0; j < N; ++j)

{

if (map[i][j] == 1)

cout << "#";

else

cout << ".";

}

cout << endl;

}

上面的代码中,我们用1表示迷宫的障碍物,用0表示空地,然后输出整个迷宫地图。

结语

本文介绍了二维数组的定义、访问和应用,希望对读者理解和使用二维数组有所帮助。

后端开发标签