这里写目录标题
前言
数组是一种常见的数据结构,它是同类型元素的有序集合。数组有固定的大小,可以通过索引访问其中的元素。
一、定义
<数据类型><数组名>[<大小>];
int numA[5];//定义一个大小为5的整形数组
char numB[50];//定义一个大小为50的字符数组
int numC[]={1,2,3,4,5};//定义一个大小为5的数组,并初始化赋值元素1,2,3,4,5
char numD[3][20];//定义一个大小为3的字符串数组,每个字符串有20个字符的容量,每个字符串最大长度为19
char numE[3][3];//定义一个3*3的整形矩阵
struct ABC{
//...
};
struct ABC numF[3];//定义一个大小为3的结构体数组,每个元素存储一个结构体信息
二、特点
1、存储相同类型的元素
数组中的所有元素必须具有相同的数据类型,如整数、浮点数、字符等。
2、连续的内存空间
数组中的元素在内存中是连续存储的,通过索引可以快速访问特定位置的元素。
3、固定的大小
数组在创建时需要指定大小,一旦定义后,大小不可更改。
4、索引从0开始
数组的索引从0开始,即首个元素的索引为0,第二个元素为1,以此类推。
5、快速访问元素
通过索引访问数组中的元素,如"num[0]"表示数组的第一个元素。
6、无边界检查
C/C++中的数组在访问时不进行边界检查,如果访问了超出数组范围的索引,可能导致未定义行为。
int num[5]; //数组下标为0-4
num[5]=1; //超出定义范围的操作
printf("%d\n",num[6]); //超出定义范围的操作
三、优缺点
1、优点
能够快速访问和修改元素
2、缺点
大小固定,不能动态调整;数组的插入和删除操作比较耗时,需要进行元素的移动
四、动态数组
数组的大小在定义时必须是一个常量,不能使用变量作为大小。
如果需要调整数组大小,可以考虑使用动态内存分配(如"malloc"和"free")或使用动态数组(如"std::vector")。
五、操作
静态数组中(固定大小的数组),通过移动元素的方式实现数组的插入与删除。
#include <stdio.h>
#define MAX_SIZE 10
void insertElement(int arr[],int size,int index,int element){
if(size>=MAX_SIZE||index<0||index>size){
printf("无效的插入操作.\n");
return;
}
//后移元素,给插入的元素腾出空间
for(int i=size;i>index;i--){
arr[i]=arr[i-1];
}
//插入元素
arr[index]=element;
//更新数组大小
size++;
//输入插入后的数组
for(int i=0;i<size;i++){
printf("%d\n",arr[i]);
}
}
void deleteElement(int arr[],int size,int index){
if(index<0||index>=size){
printf("无效的删除操作.\n");
return;
}
//前移元素,覆盖需要删除的元素
for(int i=index;i<size-1;i++){
arr[i]=arr[i+1];
}
//更新数组大小
size--;
//输出删除后的数组
for(int i=0;i<size;i++){
printf("%d\n",arr[i]);
}
}
int main(){
int arr[MAX_SIZE]={1,2,3,4,5};
int size = 5;
int index = 2;
int element = 6;
//执行插入操作
//insertElement(arr,size,index,element);
//执行删除操作
//deleteElement(arr,size,index);
return 0;
}
注意:插入与删除都需要在数组的下标范围内进行操作,如果需要超出范围的插入,需要使用动态数组调整数组的大小,重新分配更大的内存空间,并将原数组的内容复制到新的内存位置中。
六、应用场景
1、存储和访问一组数据
数组是一种线性数据结构,可以用于存储一组相同类型的数据元素,并通过索引快速访问和修改元素。如人员的信息,图像的像素值等。
2、遍历和处理数据
通过使用循环语句,可以遍历数组中的所有元素,对每个元素进行处理和操作。如计算数组数值总和,查找最大值和最小值等。
3、矩阵和多维数据
由于数组可以具有多个维度,因此可以用于表示矩阵和多维数据。如图像处理中的像素矩阵,地图数据等。
4、缓存和缓冲区
数组可用作缓存或缓冲区,用于临时存储数据以提高性能。如计算过程中的临时存储,网络数据的接收缓冲区。
5、排序和搜索
使用数组可以实现各种排序和搜索算法。如冒泡排序,二分查找等。
6、实现其他数据结构
可以基于数组组成其他数据结构,如栈、队列、哈希表等。数组提供了底层的数据存储和访问,可以用于构建更高级的数据结构。
7、数据库和文件存储
在数据库和文件存储中,数组广泛用于存储和组织数据。如数据库表中的行和列、文件中的数据记录等。