Arkadaşlar merhaba. C dilinde yazdığım bu kod hata veriyor lardımcı olur musunuz

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void tekrarsiz_dizi(a);
int main(){
    int i;
    int *dizi;
    dizi=(int*)malloc(20);
    printf("dizinin ilk hali:\n");
    for(i=0;i<20;i++){
        dizi[i]=rand()%100;
        printf(" %d ",dizi[i]);
            }
        
    tekrarsiz_dizi(dizi);
}
void tekrarsiz_dizi(dizi){
    int j,i,k;
int    n=20;
    int *dizi2;
    dizi2=(int*)malloc(sizeof(int));
    
    for(j=0;j<20;j++){
        
        for(i=j+1;i<20;){
            
            if(dizi[j]==dizi[i]){
                
                for(k=i;k<n;k++){
                    dizi[k]=dizi[k+1];
                }
                n--;//tekrar eden sayıları sileceği için bir azaltıyoruz
            }
            else
            i++;//tekrar eden sayı yoksa azaltma yapmadan döngüyü bir artırıyoruz.
        }
        
    }
    for(i=0;i<n;i++){
        dizi2[i]=dizi[i];
        printf(" %d ",dizi2[i]);
    }
    
}