C语言中怎么删除数组中的一个元素

C语言中如何删除数组中的一个元素
比如一个int类型的数组,要删除最后一个元素,该怎么做

------解决方案--------------------
建立新数组,copy 除最后一个元素的所有元素
------解决方案--------------------
楼上正解。
如果数组是用malloc建立的话,重新建立一个,copy所有元素。然后把指针指向新数组,原来的数组free掉。
------解决方案--------------------
C/C++ code
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
    size_t len = 3; //length of the array
    int * a = calloc(len, sizeof(int));
    for (int i = 0; i < len; i++)
    {
    a[i] = i + 1;
    }
    int pos = 1; //the pos of the element you want to delete
    memmove(a + pos, a + pos + 1, len - pos - 1);
    a = (int*)realloc(a, len - 1);   
    for (int i = 0; i < len - 1; i++)
    {
    printf("%d\n", a[i]);
    }
}

------解决方案--------------------
1楼的办法只有删除最后一个元素好用 

通用的办法还是重新复制一次 只保留需要的元素就行了

如果有大量的增加和删除操作 还是用链表吧