编写函数fun删除一组数组中所有相同的数

这个补充的代码是什么意思?for(j=i;j<n-1;j++) a[j]=a[j+1];这一步为什么要这样写?

//编写函数fun删除一组数组中所有相同的数,只保留一个,数组中的数已按从小到大的顺序排列。调用函数后返回删除后数组中剩余数据的个数。
//例如:数组内容为:1 1 3 4 4 7 8 10 10 11 ,结果:1 3 4 7 8 10 11。
//注意:请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句
---------------------------------------------------------------------------------------------------*/
#include <iostream>
#include <fstream>
using namespace std;
int fun(int a[],int n)
{
  /*********Begin**********/
  




  
  /**********  End  **********/
}

int main()
{
  void xxx();
  int a[40];
  int i,c;
  cout<<"请输入10个从小到大排序的整数"<<endl;
  for (i=0;i<10;i++)
  {
    cin>>a[i];
   }
  c=fun(a,10);
  cout<<endl<<"删除重复数据之后是"<<endl;
  for(i=0;i<c;i++)
  {
     cout<<a[i]<<'\t';
  }
  xxx();
  return 0;
}


//示例代码:
int i,j;
  for(i=0;i<n-1;i++)
{
  if(a[i]==a[i+1])
  {
    for(j=i;j<n-1;j++)
         a[j]=a[j+1];
     n--;
     i--;
      
   }
}
return n; 

for(j=i;j<n-1;j++) a[j]=a[j+1]; 将当前数组元素 a[j=i] 用后一个 a[j+1] 元素来覆盖,一直到数组最末的元素。

后面所有元素前移一位