一、什么是数组
数组是相同类型数据的有序集合. 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成
二、数组的特点
1.数组只能存储同一种数据类型的数据
2.一旦初始化,长度固定
3.数组中的元素与元素之间的内存地址是连续的
三、数组的代码
(1)输入元素
void input(int arr[] , int len){
//定义循环变量
int i ;
int *p = arr;
for(i = 0 ; i<len ; i++){
printf("请输入第%d个元素:",i+1);
scanf("%d",&arr[i]);
//scanf("%d",arr[i]);
//scanf("%d",p + i);
}
}
(2) 输出元素(遍历数组)
void output(int arr[] , int len){
//定义循环变量
int i;
int *p = arr;
for(i=0 ; i<len ; i++){
printf("%d " , arr[i]);
//printf("%d ",*(arr+i));
//printf("%d ",*(p+i));
}
}
(3)查询元素
//根据元素的值 去找
int searchValue(int arr[] , int len , int value){
int i;
for(i=0;i<len;i++){
if(value == arr[i]){
return i;
}
}
return -1;
}
//根据下标 查找元素
int searchKey(int arr[] , int len , int key){
//判断位置是否在数组范围之内
if(key < 0 || key > len - 1){
printf("位置不对!");
return; //exit(0); 结束程序
}
printf("查找的元素是:%d\n",arr[key]);
}
(4)动态生成 数组
int * getArray(int num){ //返回一个指针变量
int i,*p,num; // p 指向 动态数组首地址
printf("请输入你要生成的数组长度是:\n");
scanf("%d",&num);
p = (int *)malloc(sizeof(int)*num);
if(p == NULL){
printf("空间申请失败!");
return 0;
}
return p;
}
(5)修改元素
//根据元素值修改
void updateValue(int arr[] , int len , int value){
//修改前 修改后
int firstValue , lastValue , i;
printf("请输入你要修改的元素:\n",&firstValue);
scanf("%d",&firstValue);
printf("请输入你要修改后的元素:\n",&firstValue);
scanf("%d",&firstValue);
for(i = 0;i<len ;i++){
if(arr[i] == forstValue){
arr[i] = lastValue;
}
}
}
//根据位置修改
void updatekey(int arr[] , int len ){
int key , value;
printf("请输入你要修改的位置:\n");
scanf("%d",&key);
printf("请输入你要修改后的位置:\n");
scanf("%d",&value);
if(key < 0 || key > len-1){
printf("位置不对!");
return 0;
}
}
(6)插入元素
void insert(int arr[] , int len , int index , int value){
int i;
if(index < 0 || index > len-1){
return ;
}
//元素后移
for(i = *len-1 ; i >= index ; i--){
arr[i+1] = arr[i];
}
//插入元素
arr[index] = value;
//长度变化
(*len)++;
}*
(7)删除元素
void delete(int arr[] , int len , int index){
int i;
if(index < 0 || index > len-1){
return ;
}
//元素前移
for(i=index ; i<len-1 ; i++){
arr[i] = arr[i+1];
}
//长度变化
(*len)--;
}
(8)字符数组
//1.大括号初始化字符数组时,需要预留一个空间 做 结束标志\0,否则会乱码
char a[5] = {'a','b','c','d','e'}; //乱码
//2.当我们使用双引号初始化值,自带结束标志
char str[] = "hello";
注意:
strlen 求字符串长度时,不带\0
sizeof 求字符串长度时,带\0
(9)字符数组两种 键盘输入方式
1.gets(字符串);
2. scanf("%s",字符串);
//可以校验 是否越界,stdin 是标准输入流(键盘输入)
fgets(a,sizeof(a),stdin);