C++中的数组是一种用于存储固定大小相同类型元素的数据结构。数组具有连续的内存空间,可以使用索引访问其元素。以下是一些关于C++数组的详细信息:
- 声明和初始化:
可以在C++中声明一个数组,同时对其进行初始化。例如:
这里,我们声明了一个名为
arr2的整数数组,它包含6个元素。我们在声明的同时初始化了这个数组。
- 访问数组元素:
可以使用索引来访问数组的元素。例如,arr2[0]会访问数组的第一个元素,arr2[5]会访问数组的最后一个元素。请注意,数组的索引是从0开始的。
- 数组大小:
可以使用sizeof操作符来获取数组的大小(即数组中的元素数)。例如,sizeof(arr) / sizeof(arr[0])会返回数组arr的元素数。
- 多维数组:
C++还支持多维数组。例如,可以生、声明一个二维数组:
以上是4种声明方式,可以通过arr[i][j]的形式访问其元素。
- 数组作为函数参数:
当数组作为函数的参数时,它通常会退化为指针。因此,函数内部无法获取数组的大小。如果需要在函数内部获取数组的大小,需要将数组大小一同传递给函数。
以下是本章小结
- 数组的内存分配:在C++中,数组是在栈上分配内存的。当声明一个数组时,系统会为其分配一块连续的内存空间。数组的名称实际上是指向这块内存空间的首地址的指针。
- 数组的初始化:除了可以在声明时初始化数组,还可以在后续的代码中对数组进行赋值。例如,可以使用循环来对数组的每个元素进行赋值。
- 数组的遍历:可以使用循环来遍历数组中的每个元素。通常使用for循环来遍历数组,使用索引来访问每个元素。
- 数组作为函数参数:当数组作为函数的参数时,实际上传递的是数组的首地址。在函数内部,可以通过这个地址来访问数组的元素。但是,由于函数内部无法获取数组的大小,因此需要在调用函数时传递数组的大小或者使用其他方法来获取数组的大小。
- 多维数组的本质:多维数组实际上是一种数组的嵌套。例如,一个二维数组可以看作是一个包含多个一维数组的数组。多维数组的访问也是通过索引来进行的,只是需要指定多个索引。
下面是一些实例题,便于更好的理解数组
int a[5];:定义一个整数数组a,用于存储五只小猪的体重。int max=0;:定义一个整数变量max并初始化为0,用于存储当前已知的最重的小猪的体重。cout<<"请从键盘上输入五只小猪的体重"<<endl;:输出提示信息。for(int i=0;i<5;i++):一个循环,用于五次输入小猪的体重。{:循环体的开始大括号。cout<<"请输入第"<<i+1<<"只小猪的体重:"<<endl;:输出提示信息,告诉用户要输入第几只小猪的体重。cin>>a[i];:从键盘输入一个小猪的体重,并存储在数组a的相应位置。if(a[i]>max):检查当前输入的体重是否大于已知的最大体重。{:if语句的开始大括号。max=a[i];:如果当前输入的体重大于已知的最大体重,更新最大体重。}:if语句的结束大括号。}:循环体的结束大括号。cout<<"五只小猪中最重的是:"<<max<<"kg"<<endl;:输出最重的小猪的体重。
-
#include<iostream>和#include<ctime>:这两个头文件分别用于输入/输出和使用C语言的时间函数。 -
using namespace std;:使用std命名空间,以便我们可以直接使用如cout和cin等标准库中的名字。 -
int main():主函数的开始。 -
int a[5];:定义一个整数数组a,用于存储5个随机生成的整数。 -
srand((unsigned int)time(NULL));:设置随机数生成器的种子,以便每次运行程序时都能生成不同的随机数。 -
for(int i=0;i<5;i++) { a[i]=rand()%100+1; }:循环5次,每次生成一个1到100之间的随机整数,并存储在数组a中。 -
cout<<"逆序前"<<endl;:输出提示信息。 -
接下来的一个循环用于输出数组
a中的5个整数。 -
int start=0; int end=sizeof(a)/sizeof(a[0])-1; int temp=0;:初始化用于逆序数组的变量。 -
while(start<end)循环用于逆序数组a。- 在循环中,首先交换
start和end对应的数组元素。 - 然后,
start增加,end减少,直到start不再小于end。
- 在循环中,首先交换
-
cout<<"逆序后"<<endl;:输出提示信息。 -
接下来的一个循环用于输出逆序后的数组
a中的5个整数。 -
system("pause");:暂停程序执行,等待用户按键继续。 -
return 0;:主函数返回0,表示程序正常结束。