c语言数组的删除
1. c语言数组元素的删除与增加。
C语言中的数组本质上是在计算机内存中分配的连续空间。
如果需要对元素进行插入和删除,并不能直接将内存中为该数组分配的空间进行插入/新增和删除,而是只能通过数据复制的方式将本来不在这个位置的元素进行移动,看起来像是元素的前移和后移。
举个例子吧:整型数组(1, 2, 3, 4, 5),如果要把2删除,那么可以将3,4,5分别向前移动,变成(1, 3, 4, 5, 5)。由于数组长度分配以后不会变化,因此最后一个多余的5实际上并不能删掉,它只是表示无意义的位置。因此对于编程人员来讲,需要另一个参数来记录这个数组中你认为有用的元素是前多少个。
值得注意的是,如果数组长度不足以保存新的元素时,是无法动态地增加数组长度的。如果非要这么做,必须要在数组分配时保证数组大小足够大。这也就是一些新手经常将数组长度设置为1000,10000的原因。
回到这个问题:
//预定义的数组,长度为20
intarray[20]={0};
//数组当前有效长度
intarrayLen=0;
//如果不是全局数组,则需要将数组指针和数组长度指针传入进行修改
voidinsertArray(intnewElement,intindex)
{
//这里没有做数组长度的检验,你需要自己完成
inti;
for(i=arrayLen++;i>index;)
array[i--]=array[i-1];//后移
array[index]=newElement;
}
voiddeleteArrayElement(intindex)
{
for(;index<arrayLen;)
array[index++]=array[index+1];//前移。要删除的位置会被直接覆盖
arrayLen--;
}
2. C语言中怎么删除数组中的一个元素
方法:
删除就是将其下标所在位置的中的内容置为空(也就是0),然后从此位置开始,后面的内容前移,再把最后那个位置的置为空(就是0)。
前移无非就是 类似 arr[ i - 1] = arr[ i ] 这个意思。
3. c语言:从数组中删除数据怎么做
#include<stdio.h>
#define N 10
void main( )
{
int a[N] , num ,i , *p , n=N;
int j;
/*输入N个数到数组a中;*/
for(i=0;i<n;i++)
{
scanf(“%d”,&num);
a[i]=num;
}
/*在数组a中删除指定的数num;*/
for(i=0;i<n;i++)
{
if(a[i] == num)
{
//a[i]=a[n];//如果不保留原数组里的顺序,此一句即可代替下边2行语句,同时省掉变量j
for(j=i;j<n-1;j++)
a[j]=a[j+1];
n--;
}
}
/*输出删除了num后的数组a;*/
for(i=0;i<n;i++)
printf("%d ",a[i]);
getchar();
}