介绍
在 C++ 中,二维数组是多维数组中最简单的形式,可以视觉化为数组组。
一个二维数组也被称为一个 ** 矩阵**. 它可以是任何类型,如整数,字符,浮动等,取决于初始化。
在 C++ 中初始化 2D 数组
那么,我们如何在C++中初始化一个二维数组? 简单如下:
1int arr[4][2] = {
2{1234, 56},
3{1212, 33},
4{1434, 80},
5{1312, 78}
6} ;
因此,正如您所看到的,我们将一个 2D 数组arr
初始化,以 4 行和 2 列为数组。
我们还可以以以下方式初始化一个 2D数组。
1int arr[4][2] = {1234, 56, 1212, 33, 1434, 80, 1312, 78};
在这种情况下,arr 也是具有 4 行和 2 列的 2D 数组。
用C++打印2D数组
我们已经完成了2D数组的初始化,现在没有真正打印相同的,我们无法确认它是正确的。
此外,在许多情况下,我们可能需要在执行某些操作后打印结果的2D数组。
下面的代码告诉我们如何做到这一点。
1#include<iostream>
2using namespace std;
3main( )
4{
5 int arr[4][2] = {
6 { 10, 11 },
7 { 20, 21 },
8 { 30, 31 },
9 { 40, 41 }
10 } ;
11
12 int i,j;
13
14 cout<<"Printing a 2D Array:\n";
15 for(i=0;i<4;i++)
16 {
17 for(j=0;j<2;j++)
18 {
19 cout<<"\t"<<arr[i][j];
20 }
21 cout<<endl;
22 }
23}
出发点:
在上面的代码中,
- 我们首先初始化一个 2D 数组, `arr[4][2]' 具有某些值,
- 然后,我们尝试使用两个对环节的相应数组
- 对环节的外部数组在行上迭代,而内部数组在 2D 数组的列上迭代
- 因此,对于外部环节的每一次迭代,
i
会增加并将我们带到下一个 1D 数组。
将2D Array 元素作为用户输入
之前,我们已经看到了我们如何用预定义值初始化一个2D数组,但我们也可以使其成为用户输入。
1#include<iostream>
2using namespace std;
3main( )
4{
5 int s[2][2];
6 int i, j;
7 cout<<"\n2D Array Input:\n";
8 for(i=0;i<2;i++)
9 {
10 for(j=0;j<2;j++)
11 {
12 cout<<"\ns["<<i<<"]["<<j<<"]= ";
13 cin>>s[i][j];
14 }
15 }
16
17 cout<<"\nThe 2-D Array is:\n";
18 for(i=0;i<2;i++)
19 {
20 for(j=0;j<2;j++)
21 {
22 cout<<"\t"<<s[i][j];
23 }
24 cout<<endl;
25 }
26}
出发点:
对于上述代码,我们声明一个 2X2 2D 数组 `s。 使用两个嵌入的环节,我们穿过数组的每个元素,并采取相应的用户输入。
使用C++中的两个维度数列的矩阵添加
作为一个例子,让我们看看如何使用2D数组来执行 矩阵添加并打印结果。
1#include<iostream>
2using namespace std;
3main()
4{
5 int m1[5][5], m2[5][5], m3[5][5];
6 int i, j, r, c;
7
8 cout<<"Enter the no.of rows of the matrices to be added(max 5):";
9 cin>>r;
10 cout<<"Enter the no.of columns of the matrices to be added(max 5):";
11 cin>>c;
12
13 cout<<"\n1st Matrix Input:\n";
14 for(i=0;i<r;i++)
15 {
16 for(j=0;j<c;j++)
17 {
18 cout<<"\nmatrix1["<<i<<"]["<<j<<"]= ";
19 cin>>m1[i][j];
20 }
21 }
22
23 cout<<"\n2nd Matrix Input:\n";
24 for(i=0;i<r;i++)
25 {
26 for(j=0;j<c;j++)
27 {
28 cout<<"\nmatrix2["<<i<<"]["<<j<<"]= ";
29 cin>>m2[i][j];
30 }
31 }
32
33 cout<<"\nAdding Matrices...\n";
34
35 for(i=0;i<r;i++)
36 {
37 for(j=0;j<c;j++)
38 {
39 m3[i][j]=m1[i][j]+m2[i][j];
40 }
41 }
42
43 cout<<"\nThe resultant Matrix is:\n";
44
45 for(i=0;i<r;i++)
46 {
47 for(j=0;j<c;j++)
48 {
49 cout<<"\t"<<m3[i][j];
50 }
51 cout<<endl;
52 }
53
54}
出发点:
这里,
我们采取两个矩阵
m1
和m2
最多有 5 行和 5 列,另一个矩阵m3
我们将存储的结果,作为用户输入,我们为两个矩阵采取了行和列的数量. 由于我们正在执行矩阵添加,行和列的数量对于两个矩阵
然后,我们将两个矩阵作为用户输入,再次使用嵌入的环节,
在这个时刻,我们有两个矩阵 m1和 m2 *,然后我们穿过 m3矩阵,使用两个环节更新和相应的元素
m3[ ] i[ ]j
的值为
指向 C++ 中的 2D 数组
如果我们可以有指向整数的指针,指向浮动的指针,指向 char 的指针,那么我们不能有指向数组的指针吗?我们肯定可以。
1#include<iostream>
2using namespace std;
3/* Usage of pointer to an array */
4main( )
5{
6 int s[5][2] = {
7 {1, 2},
8 {1, 2},
9 {1, 2},
10 {1, 2}
11 } ;
12
13 int (*p)[2] ;
14 int i, j;
15 for (i = 0 ; i <= 3 ; i++)
16 {
17 p=&s[i];
18 cout<<"Row"<<i<<":";
19 for (j = 0; j <= 1; j++)
20 cout<<"\t"<<*(*p+j);
21 cout<<endl;
22 }
23
24}
出发点:
这里,
- 在上面的代码中,我们试图使用指针 打印2D数组
- 正如我们之前所说的,我们首先初始化了2D数组(
s[5][2]
)以及指针((*p)[2]`,其中 p是存储2个元素的数组地址的指针 - 正如我们已经说过的那样,我们可以将2D数组分解为数组的数组。因此,在这种情况下,s实际上是一个具有 5元素的数组,这进一步实际上是每个行有 2元素的数组
- 我们使用一个 `for loop 穿过这些5个元素的数组 **
将2D Array转换为函数
在本节中,我们将学习如何将一个 2D数组传递给任何 函数,并访问相应的元素。
1#include<iostream>
2using namespace std;
3
4void show(int (*q)[4], int row, int col)
5{
6 int i, j ;
7 for(i=0;i<row;i++)
8 {
9 for(j=0;j<col;j++)
10 cout<<"\t"<<*(*(q + i)+j);
11 cout<<"\n";
12 }
13 cout<<"\n";
14}
15
16void print(int q[][4], int row, int col)
17{
18 int i, j;
19 for(i=0;i<row;i++)
20 {
21 for(j=0;j<col;j++)
22 cout<<"\t"<<q[i][j];
23 cout<<"\n";
24 }
25 cout<<"\n";
26}
27
28int main()
29{
30 int a[3][4] = { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21} ;
31
32 show (a, 3, 4);
33 print (a, 3, 4);
34 return 0;
35}
出发点:
这里,
- 在
show()'函数中,我们通过
int(*q)][4], - 声明将q定义为指向4整数的数组。 q 持有 第0 1-D 阵列的基础地址
- 此地址随后被指定为q, 指针, 然后使用此指针访问 0th 1D 阵列的所有元素 。
- 下次"i"取值为1时,表达式为q+i取出第一个1-D数组的地址. 这是因为 q 是 0° 1-D 阵列的指针, 并且增加 1 将给我们下一个 1-D 阵列的地址 。 此地址再次被指派到 q , 并使用它访问下一个 1- D 阵列的所有元素( _ (
)* 在第二个函数
print()'中,**q**的宣布看起来是这样:
int q [4]', - 这与**int(*q)[4]**相同,其中q是指向由4个整数组成的数组. 唯一的优点是,我们现在可以使用更熟悉的
q[i][j]'表达式来访问数组元素。 我们可以在
show()'中使用同一种表述,但为了更好地理解指针的使用,我们使用指针来访问每个元素。 (_) (英语)
结论
因此,在本文中,我们讨论了 C++ 中的 ** 二维数组,我们如何执行各种操作以及其在矩阵中应用。
参考
- [https://en.wikipedia.org/wiki/Array_data_structure]
- /community/tutorials/arrays-in-c