介绍
数组是一种非常常见的数据结构。它能够存储一组有序数据,并且在查找、读取、排序等操作上都具有很大的优势。在C++中定义数组有多种方法,接下来我们将学习这些方法。
使用一维数组
定义一维数组
最简单的一维数组定义如下:
int arr[5];
上述语句定义了一个由五个整型元素组成的数组,可以用下标访问数组每个元素,下标从0开始:
arr[0]=1; //数组的第一个元素赋值为1.
arr[1]=2; //数组的第二个元素赋值为2.
另外,C++11新增了一种初始化数组的方式,可以使用以下方式来初始化数组:
int arr[5]={1,2,3,4,5};
这个语句在定义数组时就已经将其初始化为{1,2,3,4,5}了。
使用一维数组的注意事项
1.数组的下标是从0开始的。
2.定义数组时必须指定数组的大小,不能在程序运行过程中改变数组大小。
3.如果使用了C++11新增的一维数组初始化方式,那么定义数组时可以省略数组的大小,因为编译器会根据初始化列表推断数组的大小。
使用二维数组
定义二维数组
定义一个二维数组,需要指定两个大小,如下所示:
int arr[2][3];
上述语句定义了一个由两行三列的整型数组,可按照以下方式访问:
arr[0][0]=1; //第一行第一个元素赋值为1
arr[0][1]=2; //第一行第二个元素赋值为2
arr[0][2]=3; //第一行第三个元素赋值为3
arr[1][0]=4; //第二行第一个元素赋值为4
arr[1][1]=5; //第二行第二个元素赋值为5
arr[1][2]=6; //第二行第三个元素赋值为6
另外,您还可以使用以下方式初始化一个二维数组:
int arr[2][3]={ {1,2,3}, {4,5,6} };
使用二维数组的注意事项
1.定义数组时必须指定行和列的大小,且大小必须是常数。
2.可以使用数组名作为指针使用。例如,arr是一个二维数组,将arr作为指针使用时,它指向该数组第一个元素的首地址。
动态分配数组
动态分配一维数组
动态分配一维数组的代码如下:
int *arr=new int[5];
delete[] arr; //释放数组(不要忘记释放内存)
上述代码创建一个整型数组,大小为5。创建数组后,您可以使用与静态数组相同的方法访问这个数组。
不要忘记释放释放动态分配的内存,否则会导致内存泄漏。
动态分配二维数组
动态分配二维数组需要使用二级指针。下面是一个使用动态分配的二维数组示例:
int **arr=new int*[2];
for(int i=0;i<2;i++){
arr[i]=new int[3];
}
for(int i=0;i<2;i++){
for(int j=0;j<3;j++){
arr[i][j]=1+(i*3+j);
}
}
for(int i=0;i<2;i++){
for(int j=0;j<3;j++){
cout<
}
cout<
}
for(int i=0;i<2;i++){
delete[] arr[i];
}
delete[] arr;
上述代码动态分配了一个2x3的整型数组,并将其初始化为[{1,2,3},{4,5,6}]。然后,程序输出了该数组的内容。最后,释放数组占用的内存。
动态分配数组的注意事项
1.动态分配数组时,必须在程序的某个位置手动释放内存。
2.对于一维数组和二维数组,不同的程序员使用不同的数组释放方法。某些程序员喜欢使用delete[]释放一维数组和二维数组,而另一些程序员则会使用delete[]释放二维数组的每一行,然后再使用delete[]释放指向这些行的指针数组。
总结
本文介绍了在C++中定义数组的方法。一维数组、二维数组以及动态分配的数组都有介绍。对于初学者,数组的定义可能有一些难度,但随着时间的推移和练习,您将能够理解和掌握该数据结构的使用。