发布于:2021-01-26 14:56:02
0
347
0
什么是数组?
数组是按顺序存储相同数据类型元素的数据结构。C++数组的大小是固定的。
可以将数组视为类似数据类型的变量集合。您可以声明一个变量(数组)并向其中添加各个变量的值,而不是声明每个变量并分别为其赋值。添加到数组中的每个值都由一个索引标识。
我们为什么需要数组
数组在任何编程语言中都非常重要。它们提供了一种更方便的方法,将变量或类似数据类型的数据集合存储在一起,而不是单独存储它们。数组的每个值都将分别访问。
在C++中声明一个数组
C++中的数组声明涉及说明数组所存储的元素的类型和数量。语法:
type array-Name [ array-Size ];
在C++中声明一维数组的规则。
类型:类型是要存储在数组中的元素的类型,它必须是有效的C ++数据类型。
数组名称:阵列名称是要分配给阵列的名称。
数组大小:数组大小是要存储在数组中的元素数。必须为整数且大于0。
例如,您可以创建一个名为age的数组,并按如下方式存储5个学生的年龄:
int age[5];
数组age将存储代表不同学生年龄的5个整数。
数组初始化
数组初始化是将元素分配/存储到数组的过程。初始化可以在单个语句中完成,也可以逐个完成。请注意,数组中的第一个元素存储在索引0处,而最后一个元素存储在索引n-1处,其中n是数组中元素的总数。
对于age数组,第一个元素将存储在索引0中,而最后一个元素将存储在索引4中。
让我们使用age数组来演示如何进行数组初始化:
int age[5] = {19, 18, 21, 20, 17};
{}中的元素总数不能超过[]中指定的值。元素19位于索引0处,18位于索引1处,21位于索引2处,20位于索引3处,17位于索引4处。如果不在[]中说明要存储在数组中的元素数,那么数组的大小将只足以容纳{}中添加的元素。例如:
int age[] = {19, 18, 21, 20, 17};
上面的语句将创建与上一个完全相同的数组。还可以使用数组的索引将一个元素指定给数组。例如:
age[3] = 20;
上面的语句将值20存储在名为age的数组的索引3处。这意味着20将是数组的第4个元素。
数组的类型
有三种C++数组:
一维数组
多维数组
指向数组的指针
一位数组
这是一个数组,其中数据项仅在一维中线性排列。通常称为一维数组。语法:
datatype array-name[size];
数组名称是数组的名称
大小是要存储在数组中的项目数。
例如:
#include <iostream>
using namespace std;
int main()
{
int age[5] = { 19, 18, 21, 20, 17 };
for (int x = 0; x < 5; x++)
{
cout <<age[x]<<"n";
}
}
输出:
以下是代码截图:
代码说明:
在我们的代码中包含iostream头文件。它将允许我们读取和写入控制台。
包括std名称空间,以便在不调用它的情况下使用它的类和函数。
调用main()函数,其中应添加程序逻辑。
main()函数主体的开始。
声明一个名为age的数组来存储5个整数。5个整数也已初始化。
使用for循环创建整数变量x。
for循环体的开头。
使用循环变量x迭代数组年龄的值并在控制台上打印它们。“| n”是换行符,在每次迭代后打印在新行中。
for a循环主体的结束。
main()函数主体的结束。
这是一个数组,其中数据项被排列成一个数组。多维数组可以有任意数量的维数,但二维和三维数组是常见的。语法:
datatype array-name[d1][d2][d3]...[dn];
数组名称是将具有n个维度的数组的名称。例如:
二维数组将数据存储在具有一维数组的列表中。它是一个包含行和列的矩阵。要声明2D数组,请使用以下语法:
type array-Name [ x ][ y ];
类型必须是一个有效的C++数据类型。将二维数组视为表,其中x表示行数,y表示列数。这意味着您可以使用a[x][y]形式标识二维数组中的每个元素,其中x是元素所属的行数,y是元素所属的列数。
以下是如何初始化二维数组的示例:
int a[2][3] = {
{0, 2, 1} , /* row at index 0 */
{4, 3, 7} , /* row at index 1 */
};
在上面的例子中,我们有一个二维数组,可以看作是一个2x3矩阵。共有2行3列。元素0可以作为[0][1]访问,因为它位于行索引0和列索引1的交叉点。元素3可以作为[1][2]访问,因为它位于行索引1和列索引2的交叉点。
注意,我们只是添加了花括号来区分不同的元素行。初始化也可以按以下方式进行:
int a[2][3] = {0, 2, 1, 4, 3, 7};
};
下面的C++示例演示如何初始化和遍历2D数组:
#includeusing namespace std;
int main()
{
// a 2x3 array
int a[3][2] = { {0, 2}, {1, 4}, {3, 7} };
// traverse array elements
for (int i=0; i<3; i++)
for (int j=0; j<2; j++)
{
cout << "a[" <<i<< "][" <<j<< "]: ";
cout << a[i][j] << endl;
}
return 0;
}
输出:
以下是上述代码的截图:
代码说明:
在我们的代码中包含iostream头文件。它将允许我们读取和写入控制台。
包括std名称空间,以便在不调用它的情况下使用它的类和函数。
调用应在其中添加代码的main()函数。
main()函数主体的开始。
评论。C++编译器将跳过此。
声明3行2列的二维数组。项目也已添加到数组中。
评论。C++编译器将跳过这个.
创建一个变量i,用于循环。此变量将迭代数组的行索引。
使用for循环创建变量j。此变量将迭代数组的列索引。
循环体的开始。
在控制台的方括号内打印控制台上变量i和j的值。
打印存储在数组a的索引[i][j]处的值。
循环体的末尾。
如果程序运行正常,main()函数应该返回一个整数值。
main()函数主体的结尾。
三维数组是数组的数组。三维数组中的每个元素由一组3个索引标识。为了访问3D数组的元素,我们使用了三个for循环。例如:
#includeusing namespace std;
void main()
{
int a[2][3][2] = {{{4, 8},{2, 4},{1, 6}}, {{3, 6},{5, 4},{9, 3}}};
cout << "a[0][1][0] = " << a[0][1][0] << "n";
cout << "a[0][1][1] = " << a[0][1][1] << "n";
}
输出:
以下是代码截图:
代码说明:
在我们的代码中包含iostream头文件。它将允许我们读取和写入控制台。
包括std名称空间,以便在不调用它的情况下使用它的类和函数。
调用main()函数,其中应添加程序逻辑。
main()函数主体的开始。
声明一个名为大小为2x3x2的三维数组。数组的值也已初始化。
访问存储在数组索引[0][1][0]中的项并在控制台上打印它。
访问存储在数组索引[0][1][1]中的项并在控制台上打印它。
main()函数主体的结尾。
指针是保存地址的变量。除了使用指针来存储变量的地址之外,我们还可以使用它来存储数组单元格的地址。数组的名称总是指向它的第一个元素。考虑以下声明:
int age[5];
age是指向$age[0]的指针,它是名为age的数组的第一个元素的地址。考虑以下示例:
#includeusing namespace std;
int main()
{
int *john;
int age[5] = { 19, 18, 21, 20, 17 };
john = age;
cout << john << "n";
cout << *john;
}
输出:
请注意,上述输出的第一个值可能返回不同的值,具体取决于分配给计算机内存中数组第一个元素的地址。
以下是代码截图:
代码说明:
在我们的代码中包含iostream头文件。它将允许我们读取和写入控制台。
包括std名称空间,以便在不调用它的情况下使用它的类和函数。
调用main()函数,其中应添加程序逻辑。
main()函数主体的开始。
声明名为*john的指针变量。
声明一个名为age的整数数组来存储5个整数。整数的值也已初始化。
为变量john赋值数组年龄的第一个索引中存储的项的地址值。
打印变量john的值,它是存储在数组的第一个索引中的项的地址。
打印存储在数组中的第一个值。
main()函数主体的结尾。
数组名可以用作常量指针,反之亦然。这意味着您可以使用*(age+3)访问存储在数组age的索引3中的值。例如:
#includeusing namespace std;
int main() {
// an array of 5 elements.
int age[5] = { 19, 18, 21, 20, 17 };
int *p;
p = age;
// output array values
cout << "Using pointer: " << endl;
for (int x=0; x<5; x++) {
cout << "*(p + " << x << ") : ";
cout << *(p + x) << endl;
}
cout << "Using age as address: " << endl;
for (int x = 0; x < 5; x++) {
cout << "*(age + " << x << ") : ";
cout << *(age + x) << endl;
}
return 0;
}
输出:
以下是代码截图:
代码说明:
在我们的代码中包含iostream头文件。它将允许我们读取和写入控制台。
包括std名称空间,以便在不调用它的情况下使用它的类和函数。
调用main()函数并开始main()函数的主体。
评论。C++编译器将跳过此。
声明一个名为age的数组来存储5个整数。
创建整数指针p。
为p赋值数组年龄的第一个元素的地址值。
注释。C++编译器将跳过此。
在控制台上打印一些文本。
使用for a循环创建一个整数x。{标记for循环主体的开始。
将x的值与控制台上的其他文本一起打印出来。
在控制台上打印*(p+x)的值。
循环体的结尾。
在控制台上打印一些文本。
使用for循环创建变量x。{标记for循环主体的开始。
将x的值从0到4与其他文本一起打印出来。
打印出*(年龄+x)的值。
for循环主体的结尾。
如果程序运行成功,返回值。
main()函数主体的结尾。
数组的元素使用它们各自的索引进行访问。将要访问的元素的索引添加到数组名称后面的方括号[]中。例如:
int john = age[2];
在上面的示例中,我们只是简单地声明john的age存储在名为age的数组的索引2中。这意味着john的age是数组age中的3rd值。这里是一个完整的C++示例,演示如何访问和打印这个值:
#includeusing namespace std;
int main()
{
int age[5] = { 19, 18, 21, 20, 17 };
int john = age[2];
cout << "The age of John is:"<<john;
}
输出:
以下是代码截图:
代码说明:
在我们的代码中包含iostream头文件。它将允许我们读取和写入控制台。
包括std名称空间,以便在不调用它的情况下使用它的类和函数。
调用应在其中添加代码的main()函数。
main()函数主体的开始。
声明一个名为age的数组以存储5个整数元素。
访问数组年龄的索引2中存储的值,并将其值存储在名为john的变量中。
在控制台上与其他文本一起打印变量john的值。
数组元素按顺序存储。
数组元素使用各自的索引表示。第一个元素位于索引0处,而最后一个元素位于索引n-1处,其中是数组元素的总数。
数组的声明包括定义数组元素的数据类型以及要存储在数组中的元素数。
一维数组按顺序存储元素。
二维数组在行和列中存储元素。
三维数组是数组的数组。
可以使用元素的索引将元素添加到数组中。
数组元素使用其索引进行访问。
多维数组有多个维度。
数组名称指向它的第一个元素。
数组的大小是固定的,这意味着在数组初始化后不能将新元素添加到数组中。
作者介绍