C++数组的完整指南(附实例)

483 阅读3分钟

C++数组是存储在连续的内存位置的项目的集合。数组是放置在连续的内存位置上的一系列相同类型的元素,可以通过将索引添加到一个唯一的标识符来单独引用。

有时在编写代码时,我们需要为任何计算存储大量的数据,为此,以通常的方式,我们必须采取该数量的变量。 想一想,如果要求你给出10000个数字的总和,而你必须取10000个变量,这在逻辑上是否可行?答案显然是否定的。为了克服这种情况,我们有一个数组的概念

C++数组

C++数组是用来在一个变量中存储多个值,而不是为每个值单独声明变量。要声明一个数组,需要定义变量类型,指定数组的名称,后面加上方括号,并指定它应该存储的元素数量。

数组是类似数据类型的集合,它被存储在一个连续的内存位置。我们将用一个图来理解这个概念。

假设我们有5个数字需要存储在一个数组中。那么,这个数组将看起来像这样::

C++ Array Tutorial

例如,5个int类型的值可以被声明为一个数组,而不必声明5个不同的变量(每个变量都有其标识符)。相反,使用数组,五个int值被存储在连续的内存位置,并且所有五个值都可以使用相同的标识符和适当的索引来访问。

所以在这里,我们可以看到, 数组的索引总是从0开始, 所有的值都存储在一个连续的内存位置。

有两种类型的数组:

  1. 单维数组
  2. 多维数组

单维数组

声明一个数组

如果我们想声明一个数组,语法将如下:

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;
}

请看下面的输出:

Accessing Array Elements in 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];
	}
	cout<<"All entered array values are: \n";
	for(i=0;i<n;i++)
	{
		cout<<array[i]<<" ";
	}
	return 0;
}

请看下面的输出:

Accessing Array Elements in C++

阵列中没有索引绑定检查

在数组中没有索引的约束检查。当索引超出界线或范围时,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;
}

请看下面的输出:

No index bound checking in Array

多维数组

我们将学习如何创建一个二维数组并访问这些元素。

语法

DataType Array_name[Size 1][Size 2]

请看下面的代码:

int arr[2][3]

这里我们声明了一个2行3列的二维数组。

存储和访问二维数组的元素

二维数组看起来像这样的图:

Multi-Dimensional Array

在上图中,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;
}

请看下面的输出:

Storing and accessing elements of 2D array

所以在上面的程序中,我们已经声明了一个二维数组,然后我们按行存储数值。第一个循环是针对行索引,第二个循环是针对列索引。访问这些值也是如此。

也就是说,首先访问arr[0][0]表示第1行和第1列的值,然后访问arr[0][1]表示第1行和第2列的值,以此类推。

本教程到此结束。