前言
数组是一种数据结构,能够存储多个相同数据类型的数据。比如:存储全班同学的年龄,存储全班同学的身高等。虽然数组看起来很简单,但在实际应用中,还是有很多需要注意的地方。在本文中,列出了我所目前遇到的难点和重点,希望可以和大家分享分享。如有疏漏之处,还望各位读者可以进行补充。
静态数组
定义
顾名思义,静态数组便是数组长度固定的数组,我们需要在声明数组时,便指定数组的长度,且在程序运行过程中无法改变。比如:
int array1[10] = {
0};//声明一个包含10个int类型数据的数组,且全部初始化为0
int array2[] = {
1,2,3};//声明了一个包含3个int类型数据的数组,数组中的数据分别为:1,2,3
const int ARRAY_SIZE = 100;
double array3[ARRAY_SIZE] = {
0};//声明一个包含100个int类型数据的数组,且初始化为0
如果我们试图在程序运行时更改数组的长度,如下:
int array_size = 10;
int array[array_size] = {
0};
那么,编译器一定会报错,并指明数组的长度不能够是变量。
综上所述,对于静态数组而言,是在程序编译过程中,就需要完成为数组分配存储空间等工作,这也算是一种面向过程编程的一处体现。
缺陷
对于某些我们无法明确数组长度的应用场景,唯一的办法便是使数组的长度尽可能的大一点,尽可能可以容纳所有的数据。但这样便可能会导致内存的浪费,而且扩展性也非常低下,看起来十分笨拙。
动态数组
定义
顾名思义,动态数组是可以在程序运行期间,对数组的长度进行改变。换句话说,我们可以在程序的运行过程中,指定数组的长度,以满足不同的需求。
那么,我们如何实现动态更改数组长度的目的呢?在C语言中,我们一般使用malloc函数和free函数,实现内存空间的动态分配。但是在C++中,可以使用更好的new运算符和delete运算符,完成上述功能。
相对应的是,malloc函数和new运算符的作用均是在堆空间上开辟一个新的内存空间,free函数和delete运算符则是在需要时及时释放刚才开辟的内存空间,避免内存泄漏。下面,我们来探讨如何使用new和delete运算符实现动态数组。