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

时间:2018-11-04 18:59:25

标签: 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)--
}

但是我不明白为什么,因为如果我的列表包含4个元素,并且我要删除的位置是位置编号3,则由于此“ 3<3”,我将永远不会进入循环。 / p>

1 个答案:

答案 0 :(得分:3)

考虑数组

A={10,20,30,40,50}

,让n = 5表示数组的大小。

如果我想删除最后一个元素(在这种情况下为50),那么我可以简单地减小数组的大小(即n = 4)。

 *longi = *longi - 1;

*longi表示要减小1的数组的大小。

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