当前位置:网站首页>C语言初级—数组元素的增删改查
C语言初级—数组元素的增删改查
2022-08-02 14:03:00 【iccoke】
数组元素的增删改查
在学习数组元素的增删改查之前,我们先了解一下数组的定义
大致分为以下三种行式
1. char arr[] = {'h','e'}; // 2个单元格 单元格大小 类型
int arr[] = {1,2,3,4,5,6,7,8,9,10};
2. int arr[100]; 其中为与数组类型相同的随机值debug
3. int arr[100]={1,2,3}; debug 部分赋值 剩余 类型默认值
4.其次单独的arr代表数组首元素的地址
只有在sizeof(arr)中arr才代表数值的整体,但前提条件是与数值的定义在同一个作用域下
数组元素的增加
在编写程序之前,我们要考虑以下问题,将数组元素的增加作为函数功能封装起来,函数应该有几个参数,首先应该有原始数数组,其次应该有要增加的函数值,数组的长度在这里我们用sizeof(arr)/siezof(arr[0])计算,即数组总长度除以单个元素所占的位,但在函数参数中我们要用一个相等的值代替,因为sizeof(arr)/siezof(arr[0])要和数组的定义在同一个作用域才有效。
比入在数组arr[]={1,2,3}的最前面加上数字value=0。
具体代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
void addValue(int* arr, int value, int len)
{
for (int i =2 ; i >=0 ; i--) {
arr[i+1] = arr[i ];
}
arr[0] = value;
}
int main() {
int arr[10] = { 1,2,3 };
int value = 0;
int len= sizeof(arr) / sizeof(arr[0]);
addValue(arr, value, len);
for (int j = 0; j < 4; j++)
{
printf("%d\n", arr[j]);
}
return 0;
}
核心思想是将元素往后移动,再将所要增加的元素插入指定位置
其中有两个个关键点需要思考
addValue函数的返回值为什么为空
在没有了解到虚拟内存的前提下,这里的解释是无法返回整个数组,并且我们使用这个函数更改了原来的数组之后就可以将这个函数舍弃掉,因此不需要返回值,使用定义为void
addValue的形式参数中的*arr
*arr在这里其实是作为指针变量(指针即为地址的别名),目前了解即可。
优化
为了适应更一般的情况,我们对函数进行优化
void addValue(int* arr, int value, int len,int index,int size)//len表示数组长度,index表示插入位置,size表示有效数据位数
{
for (int i =size-1 ; i >=index ; i--) {
arr[i+1] = arr[i ];
}
arr[index] = value;
}
int main() {
int arr[10] = { 1,2,3 };
int value = 0;
int len= sizeof(arr) / sizeof(arr[0]);
addValue(arr, value, len,0,3);
for (int j = 0; j < 4; j++)
{
printf("%d\n", arr[j]);
}
return 0;
}
数组元素的删改查
主函数大致相同,我们在这里提供函数功能部分
数组元素的删除
int deleteValue(int* arr, int value, int len) {
int count = 0;
for (int j = 0; j < len-count;)
{
if (arr[j] = value)
{
for (int i = j;i <len-1;i++)
{
arr[i] = arr[i+1];
count++;
}
}
else {
j++;
}
}
return count;
}
int main(){
int arr[] = { 1,2,2,3 };
int value = 2;
int len = sizeof(arr) / sizeof(arr[0]);
int num=deleteValue(arr,value, len);
int size = len - num;
for (int i = 0; i < size; i++) {
printf("%d\n", arr[i]);
}
return 0;
}
数组元素的查找
bool isExitValue(int* arr, int value, int len)
{
for (int i = 0; i < len; i++)
{
if (arr[i] == value)
{
return true;
}
}
数组元素的修改
数组元素的修改相对简单,即在查找成功后用要修改的值替换掉原有的值即可完成数组元素的修改。
边栏推荐
猜你喜欢
随机推荐
paddle window10环境下使用conda安装
Raft协议图解,缺陷以及优化
Unit 13 Mixing in View Base Classes
[ROS] (04) Detailed explanation of package.xml
第十五单元 分页、过滤
MySQL数据库语法格式
drf view component
Flask-SQLAlchemy
MarkDown语法汇总
第八单元 中间件
瑞吉外卖笔记——第08讲读写分离
Unit 12 associated serialization
[ROS](03)CMakeLists.txt详解
drf路由组件Routers
理解TCP长连接(Keepalive)
猜数字游戏,猜错10次关机(srand、rand、time)随机数生成三板斧(详细讲解!不懂问我!)
ftp常用命令详解_iftop命令详解
Flask framework in-depth
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第九章)
[ROS] (06) ROS Communication - Topic Communication