C 删除数组中元素的函数如何工作?

C 删除数组中元素的函数如何工作?,c,C,我知道下面的函数从数组中删除一个元素 void removeElem (int V[N], int pos, int *length) { int i; for (i = pos; i < *length-1; i++) V[i] = V[i+1]; *length = *length - 1; // (*length)-- } void removelem(int V[N],int pos,int*length) { int i; 对于(i=po

我知道下面的函数从数组中删除一个元素

void removeElem (int V[N], int pos, int *length)
{
    int i;
    for (i = pos; i < *length-1; i++)
        V[i] = V[i+1];
    *length = *length - 1; // (*length)--
}
void removelem(int V[N],int pos,int*length)
{
int i;
对于(i=pos;i<*length-1;i++)
V[i]=V[i+1];
*长度=*长度-1;/(*长度)--
}
但我不明白为什么,因为如果我的列表有4个元素,而我要删除的位置是位置编号3,我将永远不会进入循环,因为“
3考虑数组

A={10,20,30,40,50}
让n=5表示数组的大小

如果我想删除最后一个元素(本例中为50),那么我可以简单地减小数组的大小(即n=4)

*longi
表示我们将减少1的数组大小

我们不必为了删除最后一个元素而对数组元素进行任何移位,所以我们不会进入循环。
但对于除最后一个元素之外的任何元素,要删除的元素右侧的所有元素都向左移动了一个位置。因此,我们进入了循环。

显示函数如何在最小main中使用。删除最后一个元素时不需要循环-其上没有要向下复制的元素。只需要减少数组长度打喷嚏。
 *longi = *longi - 1;