C++数组是存储在连续的内存位置的项目的集合。数组是放置在连续的内存位置上的一系列相同类型的元素,可以通过将索引添加到一个唯一的标识符来单独引用。
有时在编写代码时,我们需要为任何计算存储大量的数据,为此,以通常的方式,我们必须采取该数量的变量。 想一想,如果要求你给出10000个数字的总和,而你必须取10000个变量,这在逻辑上是否可行?答案显然是否定的。为了克服这种情况,我们有一个数组的概念 。
C++数组
C++数组是用来在一个变量中存储多个值,而不是为每个值单独声明变量。要声明一个数组,需要定义变量类型,指定数组的名称,后面加上方括号,并指定它应该存储的元素数量。
数组是类似数据类型的集合,它被存储在一个连续的内存位置。我们将用一个图来理解这个概念。
假设我们有5个数字需要存储在一个数组中。那么,这个数组将看起来像这样::

例如,5个int类型的值可以被声明为一个数组,而不必声明5个不同的变量(每个变量都有其标识符)。相反,使用数组,五个int值被存储在连续的内存位置,并且所有五个值都可以使用相同的标识符和适当的索引来访问。
所以在这里,我们可以看到, 数组的索引总是从0开始, 所有的值都存储在一个连续的内存位置。
有两种类型的数组:
- 单维数组
- 多维数组
单维数组
声明一个数组
如果我们想声明一个数组,语法将如下:
DataType Array_Name [Size of Array];
请看下面的例子:
int arr[5];
现在,让我们看看下面的编程例子:
#include<bits/stdc++.h>
using namespace std;
int main()
{
//METHOD 1
int arr1[3];
arr1[0]=5;
arr1[1]=6;
arr1[2]=7;
//=======METHOD 2=======
int arr2[]={2,5,9,4};
//=======METHOD 3=======
int arr3[4]={7,65,34,33};
//=======METHOD 4========
int n, i;
cout<<"Enter size of array: ";
cin>>n;
int array[n]; //declaring array with size
cout<<"Enter array elements\n";
for(i=0;i<n;i++)
{
cin>>array[i];
}
return 0;
}
在第一种方法中,我们用数组的大小声明了一个数组,然后我们用它们的索引存储元素。
在第二种方法中,我们声明了数组,没有提到大小,然后将它们存储在大括号中。在这种情况下,我们必须稍后计算大小。
在方法三中,我们声明了数组的大小,然后我们在大括号中给出了元素。在这两种情况下,数组的索引将从0开始。
在方法四中,我们在运行时接受用户的输入。
在C++中访问数组元素
要访问任何特定的值。在这种情况下,我们必须提到数组索引,这意味着我们想显示哪个位置的值。
例如,请看下面的代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, i;
cout<<"Enter size of array: ";
cin>>n;
int array[n]; //declaring array with size
cout<<"Enter array elements\n";
for(i=0;i<n;i++)
{
cin>>array[i];
}
int id;
cout<<"Enter index of the array\n";
cin>>id;
cout<<"Value at index "<<id<<" is "<<array[id];
return 0;
}
请看下面的输出:

要访问所有的元素 :显示一个数组中所有元素的最好方法是使用循环。下面的程序显示了如何使用循环来访问一个数组的所有元素:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, i;
cout<<"Enter size of array: ";
cin>>n;
int array[n]; //declaring array with size
cout<<"Enter array elements\n";
for(i=0;i<n;i++)
{
cin>>array[i];
}
cout<<"All entered array values are: \n";
for(i=0;i<n;i++)
{
cout<<array[i]<<" ";
}
return 0;
}
请看下面的输出:

阵列中没有索引绑定检查
在数组中没有索引的约束检查。当索引超出界线或范围时,C++会抛出垃圾或意外值。
下面的程序显示了索引绑定检查:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, i;
cout<<"Enter size of array: ";
cin>>n;
int array[n]; //declaring array with size
cout<<"Enter array elements\n";
for(i=0;i<n;i++)
{
cin>>array[i];
}
int id;
cout<<"Enter index of the array\n";
cin>>id; //enter out of bound value
cout<<"Value at index "<<id<<" is "<<array[id];
return 0;
}
请看下面的输出:

多维数组
我们将学习如何创建一个二维数组并访问这些元素。
语法
DataType Array_name[Size 1][Size 2]
请看下面的代码:
int arr[2][3]
这里我们声明了一个2行3列的二维数组。
存储和访问二维数组的元素
二维数组看起来像这样的图:

在上图中,15的索引是arr[0][0],2的索引是arr[1][2],表示第二行和第三列。
注意:行和列的索引从0开始
#include<bits/stdc++.h>
using namespace std;
int main()
{
int x,y;
cout<<"Enter row number and column number :";
cin>>x>>y;
int arr[x][y],row,col;
cout<<"Enter value of array\n";
for(row=0; row<x; row++)
{
for(col=0; col<y; col++)
{
cin>>arr[row][col];
}
}
cout<<"Value of array are:\n";
for(row=0; row<x; row++)
{
for(col=0; col<y; col++)
{
cout<<arr[row][col]<<" ";
}
cout<<"\n";
}
return 0;
}
请看下面的输出:

所以在上面的程序中,我们已经声明了一个二维数组,然后我们按行存储数值。第一个循环是针对行索引,第二个循环是针对列索引。访问这些值也是如此。
也就是说,首先访问arr[0][0]表示第1行和第1列的值,然后访问arr[0][1]表示第1行和第2列的值,以此类推。
本教程到此结束。