当前位置:网站首页>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;
		}

	}

数组元素的修改

数组元素的修改相对简单,即在查找成功后用要修改的值替换掉原有的值即可完成数组元素的修改。

原网站

版权声明
本文为[iccoke]所创,转载请带上原文链接,感谢
https://blog.csdn.net/iccoke/article/details/125868426